描述一下:CentOS + PHP + FastCGI + Nginx,配置完后,能够正常打开根目录下的index.php,但是进入abc.com/phpmyadmin,则会提示“No input file specified”。查log,貌似报的是301...驴唇不对马嘴啊。
不过我估么着可能是我找的地方不对。上网搜了一下,看到了这么个靠谱儿的原因:
任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在。PHP文件不存在,没办法返回普通的404错误,它返回 一个404,并带上一句”No input file specified”。
看上去有道理,于是检查了fastcgi_param这里。现在SCRIPT_FILENAME的设置如下:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
我注意到网上的文章里说到:
可以使用fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
但必须保证 $document_root 在配置文件中,在astcgi_param SCRIPT_FILENAME前面被用到过一次, 后面有解释为什么。
我一菜鸟不敢保证$document_root 在配置文件中,所以干脆,老老实实地改回到下面这样:
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default/wordpress$fastcgi_script_name;
问题解决。