开发者

PHP IIS 7 and FastCGI not working

I've followed the directions here: Using FastCGI to Host PHP Applications on IIS 7 to configure Windows 2008, PHP with IIS 7 and FastCGI, and I'm running into issues. The PHP version is 5.3.8. I've setup the Handler Mappings on IIS, and created a test page, though the page doesn't return anything except for a 500 error. I've ensured that PHP works, from the command line I get a response when I enter:

php -version.

That said, I've turned on Failed Request Tracing Rules for php pages, and when I browse through the error log, I see things like:

<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>

From the top of the failed request log, I can see it's running under IUSR account:

tokenUserName="NT AUTHORITY\IUSR"

Here's settings for the 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" />

I've ensure that this user name has full control over my C:\PHP directory. My php.ini file is configured within C:\PHP directory.

In addition to following the directions in that article, I also tried to create a script map for PHP, and when I created that I got a difference error, not a 500.

HTTP Error 403.1 - Forbidden
You have attempted to run a CGI, ISAPI, o开发者_运维百科r other executable program from a directory that does not allow executables to run.

Once again though, IUSR has full control over that directory so I don't quite understand why that error message.

Update The issue was glaring right at me in the log. I had ignored the PHP Warning with regard to the date.timezone thinking that it's just a warning. I set it to:

date.timezone = America/New_York

and now it works.


For future reference you can use http://php.iis.net/ to easily install php into your IIS setup. It comes with a manager which will also let you go into 'development mode' which will display php errors as opposed to covering them up.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜