项目中难免需要 require../这样文件路径,例如 thinkcms 的项目结构。
今天用 lnmp 一键安装配置的 lnmp 环境,访问项目时报了 http 500,查看日志
[18-May-2018 15:20:06 PRC] PHP Warning: is_file(): open_basedir restriction in effect. File(/home/wwwroot/phpcms/public/../apps/database.php) is not within the allowed path(s): (/home/wwwroot/phpcms/public/:/tmp/:/proc/) in /home/wwwroot/phpcms/public/index.php on line 30
[18-May-2018 15:20:06 PRC] PHP Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/phpcms/thinkphp/start.php) is not within the allowed path(s): (/home/wwwroot/phpcms/public/:/tmp/:/proc/) in /home/wwwroot/phpcms/public/index.php on line 45
[18-May-2018 15:20:06 PRC] PHP Warning: require(/home/wwwroot/phpcms/thinkphp/start.php): failed to open stream: Operation not permitted in /home/wwwroot/phpcms/public/index.php on line 45
[18-May-2018 15:20:06 PRC] PHP Fatal error: require(): Failed opening required '/home/wwwroot/phpcms/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/phpcms/public/index.php on line 45
我们看到 is_file 调用时已经有了警告,open_basedir restriction in effect。 require 的时候更是导致了报错。
其原因就是因为 open_basedir 这个配置限制了 PHP 项目的操作(运行)目录。
以下是 open_basedir 可能设置的位置
1、 php.ini 修改 open_basedir
2、 nginx 下面的 fastcgi.conf
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
3、apache 的 httpd.conf
php_admin_value open_basedir "/usr/local/apache/htdocs/www/:/tmp/"
4、项目路径下的 .user.ini 文件
5、 项目中 ini_set 设置
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于