arning: require(): open_basedir restriction in effect. File(/home/wwwroot/xx/thinkphp/start.php) is not within the allowed path(s): (/home/wwwroot/xx/public:/tmp/:/var/tmp/:/proc/) in /home/wwwroot/xx/public/index.php on line 17
Warning: require(/home/wwwroot/xx/thinkphp/start.php): failed to open stream: Operation not permitted in /home/wwwroot/xx/public/index.php on line 17
Fatal error: require(): Failed opening required '/home/wwwroot/xx/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/xx/public/index.php on line 17
ThinkPHP5.0部署于Linux中白屏或500错误解决方案
问题描述:
Safari 直接白屏,而 Chrome 报告了500错误,错误信息如下:
问题诊断
ThinkPHP5.0
官方手册称:开启错误提示:
打开
php.ini
搜索display_errors
,把Off
修改为On
就开启了php 错误提示
。lnmp 的 php.ini 位置在
/usr/local/php/etc/php.ini
注意,要修改的是:
而不是:
这时再访问之前白屏的页面就会出现错误信息。如果错误信息如下那么很有可能就是因为
open_basedir
的问题。解决方案
首先尝试通过修改 php.ini解决
把权限作用域由入口文件目录修改为框架根目录 打开
php.ini
搜索open_basedir
,把open_basedir = "/home/wwwroot/xx/public/:/tmp/:/var/tmp/:/proc/"
修改为open_basedir = "/home/wwwroot/xx/:/tmp/:/var/tmp/:/proc/"
如果你的php.ini
文件的open_basedir
设置选项是被注释的或者为none
,那么你需要通过Apache
或者Nginx
来修改。LAMP(Apache)修改方案
Apache
需要修改httpd.conf
或者同目录下的vhost
目录下xx.conf
文件,如果你的生成环境是LAMP一键安装包
配置,那么多半就是直接修改你的域名.conf
文件打开
你的域名.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
即可生效LNMP(Nginx/Tengine) 修改方法
Nginx
需要修改nginx.conf
或者conf/vhost
目录下你的域名.conf
文件,如果你的生成环境是LNMP/LTMP 一键安装包
配置那么多半就是直接修改你的域名.conf
文件打开
你的域名.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/";
然后重新启动Nginx
即可生效打开 项目根目录下找到
user.ini
文件,搜索open_basedir
,把open_basedir=/home/wwwroot/www.thinkphp.cn/public/:/tmp/:/proc/
修改为open_basedir=/home/wwwroot/www.thinkphp.cn/:/tmp/:/proc/
然后重新启动web 服务器
即可生效