PHP has encountered a Stack overflow问题解决方法
昨晚将一个disucz论坛进行转移后,发现打开的页面上回多一个PHP has encountered a Stack overflow 这个提示错误,进过翻译为“PHP遇到堆栈溢出”。我就感觉奇怪了,新站没人访问的,怎么可能会溢出。 好吧去discuz官方论坛找找解决方法。
找到的第一解决方法,更新后台缓存,结果不行。接下来检查数据库配置文件,也没有错误。检查php权限也没有错误。
discuz官网有人说是php版本太低了,个人对于这种人是比较反感的,这种说法比较扯淡。不用去验证了。
把新旧的服务器对比较,发现了一个问题,两个的路径都不同,马上去查看上级目录文件夹权限,果然是权限出现了问题。文件路径是D:/www/discuz. 查看到旧的服务器上面www和discuz文件夹权限有“匿名来宾权限”。 在去新服务器上面看到www文件夹没有“匿名来宾权限” 而discuz文件夹权限则是有的。 说明上一级目录权限不足导致的。 重新给一下权限。 ok完美解决PHP has encountered a Stack overflow的问题。
上面说了这么多,其实就是一句话:
在windows服务器下面都是因为权限问题,具体来说是上一级目录权限问题。
例如:
原来的网站目录是 d:\www\jb51
快速安全的解决方法就是在jb51目录下,新建一个目录 webroot,而且这个目录的权限跟jb51权限是一样的。
现在的网站目录就是:d:\www\jb51\webroot即可。
现在很多php系统都是因为这个问题导致出错例如 discuz、phpmyadmin等。