【问题标题】:PHP IIS 7 and FastCGI not workingPHP IIS 7 和 FastCGI 不工作
【发布时间】:2011-11-19 02:07:15
【问题描述】:

我已按照此处的说明进行操作:Using FastCGI to Host PHP Applications on IIS 7 配置 Windows 2008、带有 IIS 7 和 FastCGI 的 PHP,但我遇到了问题。 PHP 版本是 5.3.8。我已经在 IIS 上设置了处理程序映射,并创建了一个测试页面,尽管该页面除了 500 错误之外没有返回任何内容。我已经确保 PHP 可以正常工作,从命令行输入时我会收到响应:

php -version.

也就是说,我已经为 php 页面打开了失败的请求跟踪规则,当我浏览错误日志时,我看到如下内容:

<EventData>
  <Data Name="ContextId">{00000000-0000-0000-0200-0080010000F6}</Data>
  <Data Name="ModuleName">FastCgiModule</Data>
  <Data Name="Data1">FASTCGI_RESPONSE_ERROR</Data>
  <Data Name="Data2">PHP Warning:  phpinfo() [&lt;a href=&apos;function.phpinfo&apos;&gt;function.phpinfo&lt;/a&gt;]: It is not safe to rely on the system&apos;s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected &apos;America/New_York&apos; for &apos;-4.0/DST&apos; instead in C:\inetpub\wwwroot\phpinfo.php on line 1
</Data>
<Data Name="ErrorCode">5</Data>
 </EventData>
 <RenderingInfo Culture="en-US">
  <Opcode>MODULE_WARNING</Opcode>
  <Keywords>
  <Keyword>Module</Keyword>
  </Keywords>
  <freb:Description Data="ErrorCode">Access is denied.
 (0x5)</freb:Description>

从失败请求日志的顶部,我可以看到它在 IUSR 帐户下运行:

tokenUserName="NT AUTHORITY\IUSR"

这里是 fastCgi 的设置:

<fastCgi>
    <application fullPath="C:\PHP\php-cgi.exe" instanceMaxRequests="10000">
        <environmentVariables>
            <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
            <environmentVariable name="PHPRC" value="C:\php\php.ini" />
        </environmentVariables>
    </application>
</fastCgi>

<handlers accessPolicy="Read, Script">
    <add name="PHP via FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\PHP\php-cgi.exe" resourceType="Unspecified" requireAccess="Script" />

我已确保此用户名可以完全控制我的 C:\PHP 目录。我的 php.ini 文件配置在 C:\PHP 目录中。

除了按照那篇文章中的说明进行操作外,我还尝试为 PHP 创建一个脚本映射,但在创建时出现了差异错误,而不是 500。

HTTP Error 403.1 - Forbidden
You have attempted to run a CGI, ISAPI, or other executable program from a directory that does not allow executables to run.

不过,IUSR 再次完全控制该目录,所以我不太明白为什么会出现该错误消息。

更新 这个问题在日志中直勾勾地盯着我。我忽略了关于 date.timezone 的 PHP 警告,认为这只是一个警告。我将其设置为:

date.timezone = America/New_York

现在它可以工作了。

【问题讨论】:

    标签: php iis iis-7 fastcgi windows-server-2008-r2


    【解决方案1】:

    为了将来的参考,您可以使用http://php.iis.net/ 轻松地将 php 安装到您的 IIS 设置中。它带有一个管理器,它还可以让你进入“开发模式”,它会显示 php 错误而不是掩盖它们。

    【讨论】:

    • 哇,那会容易得多。我将保存此链接以供将来参考。
    最近更新 更多