lnmp安装完成,项目上传配置好域名和数据库。却无法访问,打开一片空白。
打开/usr/local/php/etc/php.ini,开启display_errors = On,然后看到原因如下:
Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/youmi/thinkphp/start.php) is not within the allowed path(s): (/home/wwwroot/youmi/public/:/tmp/:/proc/) in /home/wwwroot/youmi/public/index.php on line 18
Warning: require(/home/wwwroot/youmi/thinkphp/start.php): failed to open stream: Operation not permitted in /home/wwwroot/youmi/public/index.php on line 18
Fatal error: require(): Failed opening required '/home/wwwroot/youmi/public/../thinkphp/start.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/youmi/public/index.php on line 18
image.png
网上说修改.user.ini
,无法修改或者删除.user.ini文件
image.png
chattr命令用于改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防以外删除。
语法chattr[-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]参数
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
进入到`.user.ini'所在目录,执行一下 lsattr -a,查看文件下下边包含文件的属性,
看到`.user.ini'有个'i'属性,代表不得任意更动文件或目录,
可以去除掉此属性,然后我们再执行删除,就可以顺利删除掉了:
chattr -i .user.ini #关闭属性
chmod 666 .user.ini #给写入权限
删除:rm -rf .user.ini #删除文件
修改:chattr +i .user.ini #修改完毕,开启属性
#修改前
open_basedir=/home/wwwroot/youmi/:/tmp/:/proc/
#修改后
open_basedir=/home/wwwroot/youmi/public/:/tmp/:/proc/
发现以上设置根本没起到作用,使用下面设置后可以访问了
不只是thinkphp5,其它框架此问题也可用此方法解决:
修改vim /usr/local/nginx/conf/fastcgi.conf ,注销或者修改open_basedir=NULL
#注销
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
#修改
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=NULL";
image.png
image.png
最后别忘了重启服务!
后期在宝塔下又遇到同样问题,解决笔记!
php项目是thinkphp5,open_baserdir一直有问题,require失败。
image.pngPHP message: PHP Fatal error: require(): Failed opening required
Warning: require(): open_basedir restriction in effect. File(/www/wwwroot/paijinhua/public/../thinkphp/start.php) is not within the allowed path(s): (/www/wwwroot/paijinhua/public/:/tmp/:/proc/) in /www/wwwroot/paijinhua/public/index.php on line 18
Warning: require(/www/wwwroot/paijinhua/public/../thinkphp/start.php): failed to open stream: Operation not permitted in /www/wwwroot/paijinhua/public/index.php on line 18
Fatal error: require(): Failed opening required '/www/wwwroot/paijinhua/public/../thinkphp/start.php' (include_path='.:/www/server/php/56/lib/php') in /www/wwwroot/paijinhua/public/index.php on line 18
关闭防跨站攻击
image.png最后解决方法是在fastcgi.conf文件最后追加一句
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";
网友评论