昨晚將一個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等。