发布时间:2020-03-24 21:41:01来源:阅读:
由于某些原因,服务器重启了,然而重启之后,再次访问居然报404错了:No input file specified.nginx配置没有动过,怎么会无缘无故出现这个问题呢?
这个其实是很常见的错误,百度随便一搜就有好多的答案,解决问题的方案都是重新配置nginx,使它能正确找到php文件。这个也是我早就知道的,既然发了这篇文章,就说明用那些方法不能解决,或者就不是nginx配置方面的问题。那么还有什么原因造成这个现象呢?
nginx做了虚拟主机配置,访问其他的站点,更奇怪的是有些可以访问,有些也报404.总结了下规律,发现如果index到html等静态文件,就没有问题,如果index到php文件,那就不行了。
不知道什么原因的话,那就控制变量一步一步来吧。
首先在根目录下建一个文件:a.php,写个简单的输出hello world的程序。
<?php
echo "hello world" ;
然后试着访问下http://chenqinghe.com/a.php。不行,还是报404.
再建个文件:1.txt,随便打些内容,再次访问。正常返回了!
这就奇怪了,nginx配置没有改过,肯定是能够找到php文件的,那为什么还不行呢?
又搜了下,发现了这篇文章:Nginx报 No input file specified. 的问题解决之路(http://m.aliyun.com/yunqi/articles/34240)
我立马看了下根目录下面有没有.user.ini文件,让人失望的是,没有发现……
无奈之下想到了杀手锏strace,之前用来追踪mysql长连接时用过,可以看进程的系统调用。那用strace追踪一下看看咯,设置php-fpm为静态模式,子进程数量固定为1,然后用strace追踪这个子进程,然后访问网址,观察调用情况。
sudo strace -p 2773 -s 1000 //绑定pid为2773的进程,设置字符串长度为1000
然后发现了些猫腻:
原来是open_basedir捣的鬼!!这个php.ini中的设置会把打开文件目录限定在设置的目录内,如上图红框内所示,不在这个目录里,就不允许访问,所以会报这个错。在php.ini中把这项注释了之后,正常了!
那么为什么重启服务器之后会这样呢?后来仔细想想,之前在用/dev/urandom生成真随机数的时候设置的,那时候设置完了之后只在命令行下执行了php的命令,也就是只用了cli这个sapi,并没有重启php-fpm,所以当时没有发现这个问题,这次重启服务器之后,这个问题就暴露了出来,果然是个大坑啊……
这篇文章主要记录了排查错误的方式,更多的时候这些排查方式比解决方案更有用,所以记录下来。
profilemaker下载
68.74 MB
NovaL CT下载
74.4M
Adobe Muse CC 2017破解版 v2017.1.0.821 附汉化方法
1.71MB
MathWorks MATLAB R2019a破解补丁 附使用方法
18.61GB
RedNotebook下载
17.5M
笔记王(KingNoteBook) V4.11 官方版
8.92M
金舟视频格式转换器 v3.8.8 电脑版 (附使用方法)
44.15M
报考照片审核处理软件 v3.0.0.373 官方版
21MB
剪报浏览器(网页剪辑浏览器) v1.0.3.6 最新版
58.3M
印通印刷报价软件下载
19.2M
Norton partitionmagic 8.0下载
3.77 MB
fileActivityWatch v1.06 中文版
132.05K
fileFriend下载
508K
fileLocator Pro下载
27.3M
fileMind QuickFix v1.0 官方版
289.1K
fileZilla Portable( FTP 客户端软件) v3.3.5.0 绿色版
5.1M
Abelssoft fileCryptor下载
3.37M
AbsolutusfileCrypter下载
75K
Alternate file Shredder(文件粉碎工具) v2.630 免费版
869KB
ESET NoD32 Antivirus下载
79.64M
2020-02-21
VirtualBox虚拟机CentOS安装增强功能Guest Additions
Docker使用示例(1) – 创建容器
BIOS中CSM选项的具体解释
如何重新安装Flash Player
如何修改QQ空间名
定时执行任务Crontab的20个例子
mSATA与mini pci-e的区别
Linux date显示或设定系统的日期与时间命令详解
CentOS-5 rpm安装yum