欧阳简之 > 解决Nginx报No input file specified错误

热爱代码,对每一行代码保持一颗敬畏之心。

问题症状

1、其他什么文件都可以正常访问,PHP文件访问就是提示:**No input file specified.**

2、网上各种资料查找均无果,Nginx配置文件什么都对

3、你觉得你快疯了

解决办法

先说可能答案,确认下PHP配置文件是否有设置open_basedir,如果有,请注释,重启PHP服务后重试,如果正常了,恭喜!如果还不行,可以尝试下列办法。

strace调试大法

这里不具体介绍 strace 命令,详情请自行了解。

我们先把PHP-FPM设为静态模式,子进程数量固定为1

# 编辑PHP-FPM配置
vi /data/app/php/etc/php-fpm.conf

#php-fpm为静态模式
pm = static
#子进程数量固定为1
pm.max_children = 1

# 重启PHP服务
systemctl restart php-fpm.service 

获得PHP进程ID

ps -aux | grep php-fpm

查得PID为119109,用strace追踪这个子进程,然后访问网址,观察调用情况

# 绑定pid为2773的进程,设置字符串长度为1000
strace -p 119109 -s 1000

123654.png

然后过程中发现了异常,真相大白!原来是open_basedir的问题!我表示也不知道什么什么加上去了!注释open_basedir,重启PHP服务,问题解决!

#注释open_basedir
vi /data/app/php/etc/php.ini
; open_basedir = /data/app/nginx/html:/data/app/php/tmp

# 重启PHP服务
systemctl restart php-fpm.service

备注:php-fpm原配置记得恢复哦。

tagged by none