Linux

Nginx报 No input file specified. 的问题解决办法

 今天用lnmp一键安装部署一个站点,配置vhost,nginx,然后访问。

提示No input file specified.

怎么回事?迅速在php的入口文件index.php最上面echo 'ok',再次刷新,页面仍旧是上面的状态。

没有打印出ok说明并没有执行php文件,然后翻nginx虚拟主机的配置,检查之后确认入口文件的路径和重写规则正确。这是怎么回事呢??

打开浏览器开发者工具看http请求和响应,发现nginx返回的是404的状态,但是我明明访问的是/index.php文件啊,怎么还报404呢,这引起了我的好奇心。

然后我又在index.php的同目录下创建了一个a.php文件,并将nginx的重写规则去掉,重启后直接访问这个a.php文件,然而还是上面的页面。

出现这个情况,说明是nginx在转发cgi的时候并没有走到php的文件。

分析一下问题所在:nginx接受了请求但是没有反代到php,但是访问其他的虚拟主机却是可以的,说明问题出在这个项目上。那就需要慢慢缩小问题的范围一点点定位问题。

在根目录下创建index.html文件,可以正常访问。

然后我就打开根,一个文件一个文件的检查,终于!我发现了问题的所在!!

原来是站点根目录下的.user.ini文件作祟。

但是这个文件是干什么的呢,http://php.net/manual/zh/configuration.file.per-user.php

于是执行以下代码:

chattr -i $(find /home/wwwroot -name '.user.ini');

rm -rf $(find /home/wwwroot -name '.user.ini')

全部干掉,终于正常访问了!

 

Publish Comment发表评论

点击刷新验证码 点击图片可刷新验证码

Comment网友评论

詹绍乾 Jancy © 版权所有 2020

Copyright © 2010 by zhansq.cn All right reserved.