Включение 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? Если да, то как?

    IIS Express поддерживает PHP без веб-матрицы. Вы можете установить только один IIS Express и заставить его работать с Visual Studio. Для этого вам понадобится Visual Studio 2010 SP1.

    1. Загрузите IIS Express по этой ссылке: Internet Information Services (IIS) 7.5 Express

    2. В Visual Studio настройте проект WebSite / WebApplication для использования IIS Express. Взгляните на эту тему Как настроить проект веб-сайта на использование IIS Express?

    3. Чтобы включить PHP в IIS Express, установите PHP и обновите applicationhost.config (% userprofile% \ documents \ iisexpress \ config \ applicationhost.config). Для этого вы можете использовать версию appcmd.exe, расположенную в папке установки IIS Express. См. Эту ссылку для получения дополнительной информации.

    Если все установлено в местах по умолчанию для англоязычных версий 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

    Другой вариант – использовать установщик Web Platform.

    Установщик Web Platform установит PHP и настроит IIS Express для вас.

    Если вы запускаете IIS через Visual Studio, вам необходимо обновить .vs \ config \ applicationhost.config в каталоге решений с помощью обработчика php

    Новые версии 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 со своего веб-сайта.

    • Найдите файл приложенияhosthost.config. Он находится в скрытой подпапке .vs. Например, C: \ MyProject \ .vs \ applicationhost.config

    • Выполните следующие команды из командной строки, заменив пути для папки проекта и установленных вами двоичных файлов PHP.

      "C: \ Program Files (x86) \ IIS Express \ appcmd.exe" установить config /section:system.webServer/fastCGI / + [fullPath = '"C: \ Program Files (x86) \ PHP \ {{ВАША PHP VERSION }} \ php-cgi.exe "'] / apphostconfig:" C: \ {{ВАШ ПРОЕКТ}} \. vs \ config \ applicationhost.config "
     "C: \ Program Files (x86) \ IIS Express \ appcmd.exe" установить config /section:system.webServer/handlers /+[name='PHP_via_FastCGI' ,path='*.php',verb='* ', modules = 'FastCgiModule', scriptProcessor = '' C: \ Program Files (x86) \ PHP \ {{ВАША PHP VERSION}} \ php-cgi.exe "', resourceType =' Unspecified '] / apphostconfig:" C: \ {{ВАШ ПРОЕКТ}} \. 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.