Nginx 下的 PHP 网站显示 "No input file specified."

更新日期: 2019-09-18 阅读次数: 1437 字数: 306 分类: thinkphp

一个 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 聊聊。 白天写程序,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2020年04月11日 世界帕金森病日
2020年04月19日 谷雨
2020年04月21日 复活节
2020年04月22日 世界地球日
2020年04月23日 世界读书日
2020年04月26日 知识产权日
2020年04月30日 佛诞
2020年04月30日 全国交通安全反思日
2020年05月01日 国际劳动节
2020年05月04日 五四青年节
2020年05月05日 立夏
2020年05月08日 世界红十字日
查看更多节日