Я пытаюсь перенести приложение LAMP на Windows / IIS.
У меня есть сервер Windows 2012 R2.
Я следую инструкциям на https://technet.microsoft.com/en-us/library/hh994592.aspx (слегка изменено: я использовал веб-сервер add-windowsfeature -includeAllSubFeature для установки IIS + CGI).
У меня установлен редист vc ++ 2015 (как x86, так и x64).
PHP 7.0.2 установлен в d: \ php.
Обработчик модуля IIS для php настроен:
name : PHP_via_FastCGI
path : *.php
verb : *
modules : FastCgiModule
scriptProcessor : D:\php\php-cgi.exe
resourceType : Either
requireAccess : Script
d: \ php находится в переменной окружения PATH.
Мои настройки php.ini — это настройки php.ini-development со следующими изменениями:
Приведенная выше конфигурация работает на рабочем столе Windows 7 и на сервере 2012 R2, НЕ подключенном к корпоративному домену, но на двух серверах 2012 R2 в домене при попытке запуска возникает ошибка 500 Internal Server. Http: //localhost/test.php.
c: \ inetpub \ wwwroot \ test.php содержит:
<?php phpinfo(); ?>
Я не вижу информации об ошибках в журнале событий Windows.
Запуск «php c: \ inetpub \ wwwroot \ test.php» в окне cmd дает мне ожидаемый phpinfo.
Я проверил разрешения NTFS для папки d: \ php и папки c: \ inetpub \ wwwroot. Их слишком много, чтобы перечислить, но SYSTEM имеет полный контроль над обеими папками, а служба WWWPublishing работает как локальная система.
Любые идеи о том, что искать, чтобы узнать, почему это не работает?
Как оказалось, группе IIS_IUSRS требовался полный контроль доступа NTFS к папке d: \ php.
Других решений пока нет …