尝试在IIS 7上运行PHP应用程序时,为什么会出现错误0x80070585?

时间:2011-08-19 11:22:19

标签: php iis-7 fastcgi

我在Windows 7上运行IIS 7.

我已经通过WebMatrix安装了PHP v5.3,在IIS中为我的PHP应用程序设置了一个网站,并为该目录启用了“Everyone”的读/写访问权限。

当我浏览应用程序时,出现以下错误:

HTTP Error 500.0 - Internal Server Error
<handler> scriptProcessor could not be found in <fastCGI> application configuration
Error Code  0x80070585

这是我试过的:

  • 确保已安装CGI(Windows功能 - &gt; Internet信息服务 - &gt;万维网服务 - &gt;应用程序开发功能 - &gt; CGI;已经勾选。)

  • 在'php.ini'的'[ExtensionList]'部分下注释掉所有扩展名。

  • 在网上注意到有关editing a file called 'fcgiext.ini'的一些讨论。在我的硬盘上搜索了这个文件; 0结果。

  • 注意到this discussion,建议处理程序部分的scriptProcessor属性中的任何内容也应该在fastCgi部分中。但是我的PHP应用程序路径中已经有一个名为“Web.roleconfig”的文件,该文件已经有一个fastCgi部分:

    <fastCgi>
      <application fullPath="%RoleRoot%\approot\Php\php-cgi.exe" arguments="-c %RoleRoot%\approot\Php\php.ini" />
    </fastCgi>
    

对不起,如果这有点不连贯。我不是PHP专家,我不知道从哪里开始解决这个问题。

至少,关于这是IIS还是PHP或FastCgi问题的任何提示都将是一个很大的帮助。

3 个答案:

答案 0 :(得分:2)

我尝试使用PHP Manager来查看是否为IIS正确配置了PHP。

从这里安装PHP Manager,http://phpmanager.codeplex.com/

然后在IIS中运行它(在IIS Mgr中显示为模块)以查看PHP是否已注册。如果不是,请单击注册新版本,导航到php-cgi.exe并选择它。然后单击Check PHPInfo()以确保它正在运行。

希望有所帮助。 标记

答案 1 :(得分:0)

上面提出的所有解决方案都基于工具。没有详细提到FastCGI支持的底层IIS机制,但这是使事情正确的关键。

  1. 必须在某处提取Windows的PHP二进制文件,并且需要准备好它的php.ini。
  2. 在服务器或站点级别的IIS管理器的处理程序映射部分(或等效地在applicationHost.config文件中)添加模块映射。
  3. 确保在IIS管理器的服务器级别的FastCGI设置部分注册了php-cgi.exe(尽管在上一步中IIS管理器应该询问您是否希望它自动添加此条目)。
  4. 这篇IIS.net文章列出了更多信息,但未提及最后一步,

    https://www.iis.net/learn/application-frameworks/scenario-build-a-php-website-on-iis/configuring-step-1-install-iis-and-php#13

    虽然这个PHP页面几乎可以显示所有屏幕截图,

    https://secure.php.net/manual/en/install.windows.iis7.php

    如果你得到500.0和0x80070585,很可能最后两步没有完成,你需要回到IIS配置。

答案 2 :(得分:0)

您需要在处理程序定义中包含(快速)CGI应用程序的参数。

不幸的是,这是add handler documentation中描述的 not ,但只是在示例文档(12)中出现,关于使用IIS设置PHP:

  

要创建这些映射,必须将元素的fullPath和arguments属性中的设置添加到FastCGI进程的映射中的scriptProcessor属性,并用管道“|”分隔。字符。

因此,在您的特定情况下,处理程序定义中的scriptProcessor需要设置为:

<handlers>
  ...
  <add ... scriptProcessor="%RoleRoot%\approot\Php\php-cgi.exe|-c %RoleRoot%\approot\Php\php.ini" />
  ...

(尚未检查环境变量是否不会导致映射问题。)