今天用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')