No input file specified. 这是怎么回事啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No input file specified. 这是怎么回事啊相关的知识,希望对你有一定的参考价值。

iis里的默认文档也设置了,不行,还有权限也开了。

重启了N回拉,怎么办啊 苦恼 大牛来指导下啊 我的是VPS

解决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_NAME
SCRIPT_FILENAME
据说,必须指定正确的SCRIPT_FILENAME, PHP-CGI会忽略SCRIPT_NAME(即使它的值设置的是正确的)
或者指定特殊的php.ini, 设置doc_root, discard path, fix pathinfo等等

script_filename 只是被用做一种快捷方式。 如果fix_pathinfo设置打开,init函数将它用来决定真实的路径

因为配置文件会改变 nginx的变量$fastcgi_script_name

fastcgi_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_INFO
PATH_TRANSLATED
SCRIPT_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=1

2. 在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】

结果搞定。:-)
参考技术A 我是把项目目录下的.user.ini文件删除解决了
原因是因为.user.ini相当于项目下的php.ini配置文件, 而这个文件修改了项目指向目录, 与我的本地项目目录不符, 故删除解决
参考技术B No input file specified. 参考技术C http://hao.360.cn/ 参考技术D IIS的不懂 我用的是linux+LNMP

完美解决 nginx No input file specified.

 

一次开发中遇到了这个问题:No input file specified,就是不能解析PHP文件

以下是完美解决方案:

把fastcgi.conf的

fastcgi_param DOCUMENT_ROOT $document_root;

注释掉。

以上是关于No input file specified. 这是怎么回事啊的主要内容,如果未能解决你的问题,请参考以下文章

完美解决 nginx No input file specified.

MediaWiki No input file specified. error

no input file specified 问题的解决

5.5版本以上”No input file specified“问题解决

5.5版本以上”No input file specified“问题解决

解决跳转出现 No input file specified.