今天接手公司的一个项目,照例将项目clone下来,配置本地host,nginx,然后访问。
怎么回事?迅速在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的文件,那这个时候需要百度了来看看有没有人遇到这个情况了。
一搜,果然
然后我就开始按照搜到的方法一个一个的试,结果意料之中的没有解决问题。(这里必须吐槽一下百度出来的结果,很大的一部分都是一样的,也就是说文章其实只有一篇,然后被A站转走,B站又把A站的转走,C站又转走B站……,搜索质量不堪入目。而且最令人发指的是后续转载的网站几乎都把文章归属于自己发表,真恶心……)
网络靠不住,那自己就得接着一点点排查了。
分析一下问题所在:nginx接受了请求但是没有反代到php,但是访问其他的虚拟主机却是可以的,说明问题出在这个项目上。那就需要慢慢缩小问题的范围一点点定位问题。
首先创建test文件夹,并在此创建a.php文件,用 /test/a.php访问,结果正常访问。
为什么这里可以但是在根目录下就不行?这么奇怪??
然后在根目录下丢一个a.jpg图片,访问/a.jpg,正常访问。
我擦,这是什么鬼?
然后我就打开根,一个文件一个文件的检查,终于!我发现了问题的所在!!
LOOK!!!
晕菜,居然是这个文件在搞鬼,将文件中的内容全部注释掉,访问正常!
但是这个文件是干什么的呢,http://php.net/manual/zh/configuration.file.per-user.php
哭啊,搞半天居然是这个东东~~~。看来还是经验不足,留此博文,记录一下并希望可以帮助到同样出现这个问题的童鞋。
收工~~