我在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功能-> Internet信息服务->万维网服务->应用程序开发功能-> CGI;
注释掉'php.ini'中'[ExtensionList]部分下的所有扩展
注意到网上关于编辑一个名为"fcgiext.ini"的文件的讨论。我在硬盘上搜索了这个文件;0的结果。
注意到这个讨论,建议在处理程序部分的scriptProcessor属性中的任何内容也应该在fastCgi部分中。但我已经有了一个名为"Web"的文件。在我的PHP应用程序路径中,已经有一个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并选择它。然后单击Check PHPInfo()以确保它正在运行。
希望有帮助。div标记
以上所有的解决方案都是基于工具的。支持FastCGI的底层IIS机制没有详细提到,但它是把事情做好的关键。
- Windows的PHP二进制文件必须在某个地方提取,并且你需要准备好它的PHP .ini。
- 在IIS管理器的Handler mapping部分(或等价于applicationHost)中添加一个模块映射。
- 确保在IIS管理器的服务器级别的FastCGI设置部分注册了php-cgi.exe(尽管在前一步IIS管理器应该询问您是否希望它帮助自动添加此条目)。
这篇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配置。
您需要在处理程序定义中包含(Fast)CGI应用程序的参数。
不幸的是,这个不是add处理程序文档中描述的,而只是出现在关于使用IIS设置PHP的示例文档(1,2)中:
要创建这些映射,必须将元素的fullPath和arguments属性中的设置添加到FastCGI进程的映射中的scriptProcessor属性中,并以管道"|"字符分隔。
因此,在您的特殊情况下,处理程序定义中的scriptProcessor
需要设置为:
<handlers>
...
<add ... scriptProcessor="%RoleRoot%'approot'Php'php-cgi.exe|-c %RoleRoot%'approot'Php'php.ini" />
...
(还没有检查env变量是否会导致映射问题)