搭建ThinkCMF訪問Nginx報500錯誤,日誌出現的open_basedir的問題
阿新 • • 發佈:2019-02-04
Open_basedir介紹:
open_basedir 將PHP所能開啟的檔案限制在指定的目錄樹中,包括檔案本身。當程式要使用例如fopen()或file_get_contents()開啟一個檔案時,這個檔案的位置將會被檢查。當檔案在指定的目錄樹之外時,程式將拒絕開啟。本指令不受安全模式開啟或關閉的影響。
事情起因: ThinkCMF專案是從阿里雲伺服器Copy下來的,然後上傳到騰訊雲伺服器,兩臺伺服器安裝環境都是Lnmp一鍵安裝。阿里雲伺服器上面訪問完全沒問題,遷移到騰訊雲後搭建專案訪問時日誌報Open_basedir錯誤。
2018/08/09 10:28:58 [error] 10209#0: *1 FastCGI sent in stderr: "PHP message: PHP Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/ThinkCMF/simplewind/thinkphp/base.php) is not within the allowed path(s): (/home/wwwroot/ThinkCMF/public/:/proc/) in /home/wwwroot/ThinkCMF/public/index.php on line 38
事情經過: 排查了一會,發現需要修改fastcgi.conf下面的open_basedir的路徑。(位置:/usr/local/nginx/conf/)
原來預設是"open_basedir=$document_root/:/tmp/:/proc/" 。
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
後來修改為如下:因為我的專案站點目錄是/home/wwwroot/。
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";
重啟 service nginx restart
以上修改後重啟Nginx後站點訪問正常了。當然了這只是其中一種方法,希望能對你有所幫助。