近期使用Thinkphp5.1做項目,在本地測試完好的代碼,放到服務器上就500錯誤,開啓顯示PHP錯誤日誌也不會有任何信息顯示出來。最後發現是文件夾讀寫權限的問題(罪魁禍首是TP5.1的ROOTPATH識別有誤)。我的thinkphp路徑是/wwwroot/thinkphp/,入口文件路徑是/wwwroot/web2/index.php,TP5的ROOTPATH會判斷爲/wwwroot/。而TP5加載時需要訪問2個目錄EXTEND_PATH 擴展類庫目錄(默認爲 ROOT_PATH . 'extend/') 和VENDOR_PATH 第三方類庫目錄(默認爲 ROOT_PATH . 'vendor/') 就會出錯。本來應該是/wwwroot/thinkphp/extend,它卻要去訪問/wwwroot/extend,自然就要出錯了。vendor目錄也是這樣。
解決方法:
1、把整個/wwwroot/目錄的訪問權限賦予給整個站點。但是如果整個目錄下有多個站點,會有一定的安全隱患。
2、在/wwwroot/目錄下建立vendor和extend兩個目錄,並且給站點增加訪問/wwwroot/vendor/ 、/wwwroot/extend/這兩個目錄的的權限。
3、暫時沒有驗證,不知道TP5能不能自定義EXTEND_PATH、VENDOR_PATH、ROOT_PATH 的路徑。