No input file specified.错误的解决

本站原创文章,转载请注明: 转载自zrong's Blog,原文 No input file specified.错误的解决,欢迎使用文章源码进行转载。

本站转载文章会标明[转],转载请注明原始作者文章地址。



今天改过服务器的php.ini文件后,发现所有的页面都不能访问,显示为:“No input file specified.”

由于要同时支持.NET,服务器采用的是IIS。我改用Apache就没有这个问题。

这个问题很让人头疼。google了一阵之后没有找到好的方法。大都是说因为CGI的安全认证问题,而使用ISAPI模块方式安装PHP则没有这个问题。可是我恰恰就是用ISAPI模块方式安装的,为什么还有这个问题?

在微软的网站找到这篇文章How IIS launches a CGI application,里面讲到在注册表中添加CreateProcessAsUser值的方法(如下):

NOTE: The following is the full path to the registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ W3SVC\Parameters

• Modify the registry to run all applications as the system.

Under the W3SVC/Parameters, place the value CreateProcessAsUser as a REG_DWORD and give it a value of 0. This causes the CGI to be ran with the CreateProcess API and run in the system context. This has serious security implications because CGI scripts will have much greater access to the system than they normally would.

我照上面的说明添加了,仍然没有用。

于是把ISAPI删除,改成CGI模式安装PHP,然后修改PHP.ini文件中的cgi.force_redirect值为0,重启IIS。错误依旧。

到现在,我大致已经知道出现这个错误可能是因为没有找到PHP ISAPI模块的DLL文件,但是我配置的所有路径都正确呀!

接着试验。禁用IIS6中的php扩展,此时访问网站出现404错误。为什么会出现404错误?这是没有找到网页文件的错误呀!看来可能是配置问题了。

想起来刚才改过PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS,一切正常了。

其实,在虚拟主机中配置php.ini中的doc_root,实际上没有什么意义,因为提供虚拟主机的IIS,一般都不会有实际的doc_root,而是每个虚拟主机一个root。我煞费苦心的跑去设置doc_root,实在是多此一举,浪费表情 :roll:

发表评论?

9 条评论。

  1. :em01:
    你好,我DOC_ROOT去掉的话,就只有一个php可以用
    CODE
      
    这该咋办呢
    能否发邮件给我,或者QQ95480025帮助我

  2. 这代码写不出来,郁闷。。。

  3. 不明白你的意思 :em06:

  4. 谢谢啊,找了好久的问题,这里写的最明确

  5. 注释掉这行依然不行,我重新装过很多次的PHP了 包括更换了版本
    我装过不少服务器的PHP环境,可是被这个机器的这个问题搞郁闷了

  6. 建议你用Apache,抛弃IIS把!:em56:

  7. 刚刚修改pligg的url改写后出现了这个错误,请您指教!!

  8. 是呀,依然存在,怎么办啊??????

  9. 导致这个问题不单单是doc_root的问题,也有可能是文件夹权限的问题,用USER用户权限,PHP一切正常,若改成指定的WIN 03用户 (带密码的,用户后台之类) 则PHP无效,根本就不是404。同样的设置在其他服务器一切正常。这个问题确实不止一个原因引起的。

发表评论


请输入上面的验证码