Включение PHP в IIS Express с помощью Visual Studio (без WebMatrix)
Я работаю над этим веб-приложением, которое в основном является .NET, но часть написана на PHP. В моей среде разработки IIS Express - это мой веб-сервер, поэтому я предпочел бы, чтобы PHP и .NET работали вместе в этой среде.
Первая наивная попытка: просто бросьте скрипты PHP на веб-сайт и загрузите их в браузере. Результатом является HTTP Error 404.21 - Not Found
со следующими предложениями:
- Установите PHP и настройте обработчики правильно.
- Установите и включите PHP для этого веб-сайта.
- Если вы используете WebMatrix, выполните следующие действия, чтобы включить PHP:
- Откройте веб-сайт в WebMatrix.
- Выберите рабочее пространство сайта и нажмите "Настройки".
- Установите флажок "Включить PHP", чтобы установить и включить PHP.
Не используя WebMatrix, это ничего не помогает мне. Затем я приступаю к глубокому траулу всего, что связано с IIS Express и PHP в Google. Из того, что я читал, это должно быть выполнимо, но все, что я нахожу в теме, похоже, предполагает, что моя IDE - это WebMatrix. Это не так.
Кто-нибудь знает, можно ли установить на IIS Express и настроить его для работы с веб-сайтом на базе Visual Studio без установки WebMatrix? Если да, то как?
Ответы
Ответ 1
IIS Express поддерживает PHP без веб-матрицы. Вы можете установить только один IIS Express и заставить его работать с Visual Studio. Для этого вам понадобится Visual Studio 2010 SP1.
Если все установлено в местах по умолчанию для американских версий Windows для Windows, команды будут:
"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/fastCGI /+[fullPath='"C:\Program Files (x86)\PHP\php-cgi.exe"']
"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='"C:\Program Files (x86)\PHP\php-cgi.exe"',resourceType='Unspecified']
Обратите внимание, что если в полном пути php-cgi.exe есть пробелы, вы ДОЛЖНЫ вставить путь в одиночные и двойные кавычки, как в приведенном выше примере.
Наконец, если у вас нет VS 2010 SP1, возможно, вам стоит взглянуть на этот пост: Отладка вашего веб-проекта .NET с помощью IIS Express
Ответ 2
Другой вариант - использовать установщик веб-платформы.
Установщик Web Platform установит PHP и настроит IIS Express для вас.
Ответ 3
Если вы запускаете IIS через Visual Studio, вам необходимо обновить .vs\config\applicationhost.config в каталоге решений с помощью обработчика php
Ответ 4
Новые версии Visual Studio поддерживают отдельную копию конфигурационного файла IIS Express "applicationhost.config". Большинство инструкций в Интернете показывают вам, как настроить целевой файл applicationhost.config, который не имеет никакого эффекта, поскольку VS2017 поддерживает отдельную копию и использует эту копию при запуске службы IIS. Чтобы включить PHP в этом сценарии, мне пришлось редактировать VS2017 частную копию.
-
Предварительное условие. Используйте установщик веб-платформы для установки PHP. (Вам не нужен один для IIS Express, просто регулярная загрузка PHP.) Вы можете использовать x86 или x64. Это установит PHP в C:\Program Files\или C:\Program Files (x86)\в зависимости от того, какой из них вы выберете. Вы также можете просто захватить PHP со своего веб-сайта.
-
Найдите свой проект applicationhost.config. Он находится в скрытой подпапке .vs. Например, C:\MyProject \.vs\applicationhost.config
-
Выполните следующие команды из командной строки, заменив пути для папки проекта и установленных вами двоичных файлов PHP.
"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/fastCGI /+[fullPath='"C:\Program Files (x86)\PHP\{{YOUR PHP VERSION}}\php-cgi.exe"'] /apphostconfig:"C:\{{YOUR PROJECT}}\.vs\config\applicationhost.config"
"C:\Program Files (x86)\IIS Express\appcmd.exe" set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='"C:\Program Files (x86)\PHP\{{YOUR PHP VERSION}}\php-cgi.exe"',resourceType='Unspecified'] /apphostconfig:"C:\{{YOUR PROJECT}}\.vs\config\applicationhost.config"
Кроме того, вы можете просто отредактировать проект applicationhost.config в текстовом редакторе и добавить следующие разделы.
system.webServer/FastCGI
<fastCgi>
<application fullPath="C:\Program Files (x86)\PHP\v7.1\php-cgi.exe" />
</fastCgi>
system.webServer/обработчики
<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\v7.1\php-cgi.exe" resourceType="Unspecified" />
Чтобы быть ясным, редактирование IIS Express\AppServer\applicationhost.config или того, что находится в папке% appdata%, не поможет, если вы не делаете что-то продвинутое, как запуск IIS Express за пределами Visual Studio.