一个 Thinkphp 的网站项目,在本地使用 Nginx 搭建开发环境。但是,其他 ThinkPHP 的项目都能正常显示网页,只有这个项目打开首页,始终显示
No input file specified.
在 Nginx 的 error log 中看到如下错误信息:
2019/09/18 16:48:14 [error] 3395#3395: *4 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(/home/zhongwei/work/some_thinkphp_project/test.php) is not within the allowed path(s): (/www/wwwroot/some_thinkphp_project/:/tmp/:/proc/) in Unknown on line 0
PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
Unable to open primary script: /home/zhongwei/work/some_thinkphp_project/test.php (Operation not permitted)" while reading response header from upstream, client: ::1, server: _, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.1-fpm.sock:", host: "localhost"
注意这一行:
File(/home/zhongwei/work/some_thinkphp_project/test.php) is not within the allowed path(s): (/www/wwwroot/some_thinkphp_project/:/tmp/:/proc/) in Unknown on line 0
/www/wwwroot 这是什么?为何这个线上的部署目录会出现在我本地的开发环境中。
项目中搜素一下:
grep '/www/wwwroot' -R .
./.user.ini:open_basedir=/www/wwwroot/some_thinkphp_project/:/tmp/:/proc/
原来项目根目录下有个 .user.ini 文件,删除之后,就可以正常访问网页了。
.user.ini 有什么作用
利用 .user.ini 设置 open_basedir 加强 php 系统安全性,从而限制 PHP 脚本动作只发生在指定目录里面,从而一定程度加强系统安全性。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式