Nginx报 No input file specified. 的问题解决之路 转

https://m.aliyun.com/yunqi/articles/34240

 

今天接手公司的一个项目,照例将项目clone下来,配置本地host,nginx,然后访问。

a391347f52001a0a8e9438e5c089fca9f2cfd246

 

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

 

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

 

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

 

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

 

出现这个情况,说明是nginx在转发cgi的时候并没有走到php的文件,那这个时候需要百度了来看看有没有人遇到这个情况了。

一搜,果然

98db415748141b5028c06257449dd3bf62b4ce8b

然后我就开始按照搜到的方法一个一个的试,结果意料之中的没有解决问题。(这里必须吐槽一下百度出来的结果,很大的一部分都是一样的,也就是说文章其实只有一篇,然后被A站转走,B站又把A站的转走,C站又转走B站……,搜索质量不堪入目。而且最令人发指的是后续转载的网站几乎都把文章归属于自己发表,真恶心……)

 

网络靠不住,那自己就得接着一点点排查了。

 

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

 

首先创建test文件夹,并在此创建a.php文件,用 /test/a.php访问,结果正常访问。

为什么这里可以但是在根目录下就不行?这么奇怪??

 

然后在根目录下丢一个a.jpg图片,访问/a.jpg,正常访问。

 

我擦,这是什么鬼?

 

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

LOOK!!!

1ef36a4813bc76b5d091139a6be8a4a2e5201a8d

 

晕菜,居然是这个文件在搞鬼,将文件中的内容全部注释掉,访问正常!

 

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

 

哭啊,搞半天居然是这个东东~~~。看来还是经验不足,留此博文,记录一下并希望可以帮助到同样出现这个问题的童鞋。

posted @ 2017-07-24 22:52  brady-wang  阅读(1944)  评论(0编辑  收藏  举报