解决NGINX PHP "No input file specified"打开一个页面<中物?php phpinfo(); ?> 然后在游览器下运行 结No input file specified.以下内容为网络收集FastCGI模式下访问php文件时,出现No input file specified.错误查看access.log 发现是 404原因分析:任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在。PHP文件不存在,没办法返回普通的404错误,它返回 一个404,并带上一句”No input file specified”另外,还可能跟 路径或者 权限有关系,或者SCRIPT_FILENAME 变量没有被正确的设置(这在nginx是最常见的原因)1)如果html也出现404错误,那么就是document root 设置的有问题2)检查脚本文件的权限, 可能PHP或者web server不能读取它3)SCRIPT_FILENAME设置错误可以使用fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;必须保证 $document_root 在配置文件中,在astcgi_param SCRIPT_FILENAME前面被用到过一次, 后面有解释为什么。或者修改/etc/php5/cgi/php.ini中cgi.fix_pathinfo=1这样也可让php-cgi正常使用SCRIPT_FILENAME这个变量有人说,这样改也行fastcgi_param SCRIPT_NAME /home/gavin/nginx/$fastcgi_script_name;让我们看看PHP对这两宴模个变量是怎么解释的吧SCRIPT_NAMESCRIPT_FILENAME据说,必须指定正确的SCRIPT_FILENAME, PHP-CGI会忽略SCRIPT_NAME(即使它的值设置的是正确的)或者指定特殊的php.ini, 设置doc_root, discard path, fix pathinfo等等script_filename 只是被用做一种快捷方式。 如果fix_pathinfo设置打开,init函数将它用来决定真实的路径因为配置文件会改变 nginx的变量$fastcgi_script_namefastcgi_param SCRIPT_NAME /home/gavin/nginx/$fastcgi_script_name;fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;和fastcgi_param SCRIPT_FILENAME /home/gavin/nginx/$fastcgi_script_name;fastcgi_param SCRIPT_NAME $fastcgi_script_name;这两种配置都是可以的用fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;也是可以的,但必须保证 $document_root 被正确设置过‘SCRIPT_FILENAME’当前执行脚本的绝对路径名(pathname)‘SCRIPT_NAME’含有当前脚本的路径。当页面需要指向他卖祥液们自己时,有用. __FILE__ 常量包含路径和文件名; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting; this to 1 will cause PHP CGI to fix it’s paths to conform to the spec. A setting; of zero causes PHP to behave as before. Default is 1. You should fix your scripts; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.; cgi.fix_pathinfo=0主要跟CGI标准的PATH_INFOPATH_TRANSLATEDSCRIPT_NAME有关系修修改了好多最终主要修改的把 NGINX DEFAULT 那个文件中的fastcgi_param SCRIPT_NAME $fastcgi_script_name;改成实际的路径今天我是这种情况我的是fastcgi_param SCRIPT_NAME /var/www/nginx-default/$fastcgi_script_name;然后就好了---------------------以上是转载,下面是个人的解决办法:1. 更改php.ini首先php.ini的配置中把;cgi.fix_pathinfo=0 改为cgi.fix_pathinfo=12. 在nginx/conf/nginx.conf 找到:fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 改为:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;然后重启nginx【killall -9 nginx ,./sbin/nginx】结果搞定。:-)
相关文章
-
betternot和certainlynot的区别
2023-05-30 20:56 阅读(646) -
lighter fuel是什么意思?瓶子上还有RONSONOL
2023-05-30 12:38 阅读(640) -
Lenoa Lewis-yesterday(歌词大意)
2023-05-30 11:59 阅读(599)
1 thenorthface是什么牌子
612 阅读
2 动漫 未来都市NO6第九集那个老鼠唱的歌叫什么名字?
673 阅读
5 HTML的input之radio如何设为组?也就是html的单选按钮。
579 阅读