解決php引入文件權(quán)限問題:open_basedir限制
本文介紹如何解決PHP open_basedir 權(quán)限限制導(dǎo)致的文件引入錯(cuò)誤。此問題通常由服務(wù)器安全設(shè)置引起,限制PHP訪問授權(quán)目錄以外的文件。
問題原因:
PHP的open_basedir配置限制了php腳本可訪問的文件路徑。 嘗試訪問授權(quán)目錄之外的文件(例如,上級(jí)目錄或其他目錄)將導(dǎo)致錯(cuò)誤。
解決方案:
以下方法適用于所有出現(xiàn)“PHP報(bào):require(): open_basedir restriction in effect”錯(cuò)誤的項(xiàng)目,不局限于thinkphp5。
如果您的ThinkPHP5項(xiàng)目在LAMP/LNMP環(huán)境下出現(xiàn)白屏或500錯(cuò)誤,請(qǐng)先啟用PHP錯(cuò)誤提示(修改php.ini中的display_errors為On)來查看具體錯(cuò)誤信息。
一、修改php.ini文件:
將權(quán)限作用域從入口文件目錄更改為框架根目錄。 找到php.ini文件(位置取決于您的LAMP環(huán)境配置,例如/usr/local/php/etc),搜索open_basedir,將類似以下配置:
open_basedir = "/home/wwwroot/tp5/public/:/tmp/:/var/tmp/:/proc/"
修改為:
open_basedir = "/home/wwwroot/tp5/:/tmp/:/var/tmp/:/proc/"
注意:如果open_basedir被注釋或設(shè)置為none,則需要通過apache或Nginx進(jìn)行修改。
二、修改Apache配置文件:
修改httpd.conf或vhost目錄下您的域名配置文件(例如/usr/local/apache/conf/vhost/www.thinkphp.cn.conf)。搜索open_basedir,將類似以下配置:
php_admin_value open_basedir "/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/var/tmp/:/proc/"
修改為:
php_admin_value open_basedir "/home/wwwroot/www.thinkphp.cn/:/tmp/:/var/tmp/:/proc/"
修改后重啟Apache使更改生效。
三、修改nginx/Tengine配置文件:
修改nginx.conf或conf/vhost目錄下您的域名配置文件(例如/usr/local/nginx/conf/vhost/www.thinkphp.cn.conf),或fastcgi.conf文件。 搜索open_basedir,將類似以下配置:
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/";
修改為:
fastcgi_param PHP_VALUE "open_basedir=/home/wwwroot/www.thinkphp.cn/:/tmp/:/proc/";
或者使用相對(duì)路徑(需理解其含義):
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
修改后重啟Nginx使更改生效。
四、修改fpm/fastcgi user.ini文件:
在項(xiàng)目根目錄下找到user.ini文件,搜索open_basedir,將類似以下配置:
open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/
修改為:
open_basedir=/home/wwwroot/www.thinkphp.cn/:/tmp/:/proc/
修改后重啟Web服務(wù)器使更改生效。
重要提示: 使用絕對(duì)路徑修改時(shí),請(qǐng)確保路徑準(zhǔn)確無誤。 使用相對(duì)路徑時(shí),務(wù)必充分理解$document_root變量的含義,避免錯(cuò)誤配置。 修改配置文件后,務(wù)必重啟相關(guān)服務(wù)以使更改生效。