Почему я получаю сообщение об ошибке 0x80070585 при попытке запустить приложение PHP на IIS 7? - PullRequest
2 голосов
/ 19 августа 2011

Я использую IIS 7 в Windows 7.

Я установил PHP v5.3 через WebMatrix, настроил веб-сайт для своего приложения PHP в IIS и разрешил доступ на чтение / запись для «Все» для каталога.

Когда я просматриваю приложение, я получаю следующую ошибку:

HTTP Error 500.0 - Internal Server Error
<handler> scriptProcessor could not be found in <fastCGI> application configuration
Error Code  0x80070585

Вот что я попробовал:

  • Гарантировано, что CGI установлен (Функции Windows -> Информационные службы Интернета -> Службы всемирной паутины -> Функции разработки приложений -> CGI; он уже отмечен.)

  • Закомментированы все расширения в разделе [ExtensionList] в php.ini.

  • Заметил некоторые обсуждения в Интернете о редактировании файла с именем 'fcgiext.ini' . Сделал поиск файла на моем жестком диске для этого файла; 0 результатов.

  • Замечено это обсуждение , сообщающее, что все, что находится в атрибуте scriptProcessor раздела обработчиков, также должно быть в разделе fastCgi. Но у меня уже есть файл с именем «Web.roleconfig» в моем пути к PHP-приложению, в котором уже есть раздел fastCgi:

    <fastCgi>
      <application fullPath="%RoleRoot%\approot\Php\php-cgi.exe" arguments="-c %RoleRoot%\approot\Php\php.ini" />
    </fastCgi>
    

Извините, если все это немного бессвязно. Я не эксперт по PHP, и я не уверен, с чего начать, чтобы решить эту проблему.

По крайней мере, любые подсказки относительно того, является ли это проблемой IIS, PHP или FastCgi, очень помогли бы.

Ответы [ 3 ]

2 голосов
/ 24 августа 2011

Я бы попробовал использовать PHP Manager, чтобы проверить, правильно ли настроен PHP для IIS.

Установите здесь PHP Manager, http://phpmanager.codeplex.com/

Затем запустите его в IIS (отображается какмодуль в IIS Mgr), чтобы увидеть, если PHP зарегистрирован.Если это не так, нажмите Зарегистрировать новую версию, перейдите к php-cgi.exe и выберите его.Затем нажмите Проверить PHPInfo (), чтобы убедиться, что он работает.

Надеюсь, это поможет.Mark

0 голосов
/ 19 мая 2016

Вам необходимо включить аргументы (быстрых) приложений CGI в определение обработчика.

К сожалению, это не , описанное в документации add add , нопросто появляется в примере документации ( 1 , 2 ) о настройке PHP с IIS:

Чтобы создать эти сопоставления, настройки в fullPath и аргументыатрибуты для элемента должны быть добавлены к атрибуту scriptProcessor в отображении для процесса FastCGI и разделены символом «|»символ.

Таким образом, в вашем конкретном случае scriptProcessor в определении обработчика должно быть установлено на:

<handlers>
  ...
  <add ... scriptProcessor="%RoleRoot%\approot\Php\php-cgi.exe|-c %RoleRoot%\approot\Php\php.ini" />
  ...

(не былопроверил, если env vars не вызывает проблемы с отображением.)

0 голосов
/ 23 августа 2015

Все решения, предложенные выше, основаны на инструментах. Базовый механизм IIS для поддержки FastCGI не был упомянут подробно, но является ключом к правильному пониманию.

  1. Двоичные файлы PHP для Windows должны быть извлечены где-нибудь, и вам нужно подготовить их php.ini.
  2. Добавление сопоставления модулей в разделе «Сопоставление обработчиков» диспетчера IIS (или аналогично в файле applicationHost.config) на уровне сервера или сайта.
  3. Убедитесь, что в разделе «Настройки FastCGI» IIS Manager на уровне сервера php-cgi.exe зарегистрирован (хотя на предыдущем этапе IIS Manager должен спросить, хотите ли вы, чтобы он помог автоматически добавить эту запись).

В этой статье 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.

...