我在 Windows 7 上运行 IIS 7。
我已经通过 WebMatrix 安装了 PHP v5.3,在 IIS 中为我的 PHP 应用程序设置了一个网站,并为目录启用了“每个人”的读/写访问权限。
当我浏览到该应用程序时,出现以下错误:
HTTP Error 500.0 - Internal Server Error
<handler> scriptProcessor could not be found in <fastCGI> application configuration
Error Code 0x80070585
这是我尝试过的:
确保已安装 CGI(Windows 功能 --> Internet 信息服务 --> 万维网服务 --> 应用程序开发功能 --> CGI;已勾选。)
注释掉了“php.ini”中“[ExtensionList]”部分下的所有扩展。
注意到网上一些关于编辑名为“fcgiext.ini”的文件的讨论。在我的硬盘上进行文件搜索以查找该文件; 0 个结果。
注意到此讨论,建议处理程序部分的 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 问题的提示都会有很大帮助。
我会尝试使用 PHP 管理器来查看 PHP 是否已针对 IIS 正确配置。
从这里安装 PHP 管理器,http://phpmanager.codeplex.com/
然后在 IIS 中运行它(在 IIS Mgr 中显示为模块)以查看 PHP 是否已注册。如果不是,请单击“注册新版本”,导航到 php-cgi.exe 并选择它。然后单击“检查 PHPInfo()”以确保其正在运行。
希望有帮助。 马克
上面提出的所有解决方案都是基于工具的。没有详细提及 FastCGI 支持的底层 IIS 机制,但这是做好事情的关键。
这篇 IIS.net 文章列出了更多信息,但没有提及最后一步,
虽然这个 PHP 页面通过屏幕截图显示了几乎所有内容,
https://secure.php.net/manual/en/install.windows.iis7.php
如果得到500.0和0x80070585,很可能是最后两步没有完成,需要回到IIS配置。
您需要在处理程序定义中包含(快速)CGI 应用程序的参数。
不幸的是,这没有在添加处理程序文档中描述,而只是出现在有关使用 IIS 设置 PHP 的示例文档(1、2)中:
要创建这些映射,必须将元素的 fullPath 和参数属性中的设置添加到 FastCGI 进程映射中的 scriptProcessor 属性中,并用管道“|”分隔性格。
因此,在您的特定情况下,处理程序定义中的
scriptProcessor
需要设置为:
<handlers>
...
<add ... scriptProcessor="%RoleRoot%\approot\Php\php-cgi.exe|-c %RoleRoot%\approot\Php\php.ini" />
...
(不过,尚未检查环境变量是否不会导致映射问题。)