Включение 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

Другой вариант - использовать установщик веб-платформы.

  • открыть программу установки веб-платформы (можно загрузить с http://go.microsoft.com/fwlink/?LinkId=255386)

  • поиск PHP для IIS Express

  • нажмите Установить

Установщик 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.