PHP IIS 7 и FastCGI не работают - PullRequest
       27

PHP IIS 7 и FastCGI не работают

1 голос
/ 17 сентября 2011

Я следовал инструкциям здесь: Использование FastCGI для размещения приложений PHP на IIS 7 для настройки Windows 2008, PHP с IIS 7 и FastCGI, и у меня возникают проблемы.Версия 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 имеет полный контроль над этим каталогом, поэтому я не совсем понимаю, почему это сообщение об ошибке.

Обновление Эта проблема была прямо на меня в журнале.Я проигнорировал предупреждение PHP в отношении date.timezone, думая, что это просто предупреждение.Я установил его на:

date.timezone = America/New_York

и теперь он работает.

1 Ответ

5 голосов
/ 17 сентября 2011

Для дальнейшего использования вы можете использовать http://php.iis.net/, чтобы легко установить php в вашу настройку IIS. Он поставляется с менеджером, который также позволит вам перейти в «режим разработки», который будет отображать ошибки php, а не скрывать их.

...