Включение PHP в IIS Express с помощью Visual Studio (sans 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? Если да, то как?

4 15

4 ответа:

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

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

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

  3. Чтобы включить PHP в IIS Express, установите PHP и обновите applicationhost.конфиг (в папке %USERPROFILE%\документы\iisexpress\config файл\файл applicationhost.конфигурация). Вы можете использовать версию 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

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

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

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

  • Нажмите Кнопку Установить

Установщик веб-платформы установит PHP и настроит IIS Express для вас.

Более новые версии Visual Studio поддерживают отдельную копию конфигурационного файла IIS Express " applicationhost.конфигурация". Большинство инструкций в интернете показывают, как настроить таргетинг на главный узел приложений.конфигурационный файл, который не имеет никакого эффекта, потому что VS2017 поддерживает отдельную копию и использует эту копию при запуске IIS express. Чтобы разрешить PHP в этом случае, мне пришлось изменить собственный экземпляр VS2017 по.

  • Обязательное условие-используйте установщик веб-платформы для установки PHP. (Тебе это не нужно. тот, что для IIS Express, просто обычная загрузка PHP.) Вы можете использовать x86 или x64. Это позволит установить PHP в любой из них C:\Program файлы\ или C:\Program файлы (x86)\ в зависимости от того, какой из них вы выберете. Вы также можете просто захватить PHP с их сайта.

  • Найдите applicationhost вашего проекта.конфиг. Он расположен в скрытом месте .против вложенной папки. Например: 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 проекта.сконфигурируйте в текстовом редакторе и добавьте следующие разделы.

Система.webServer/fastCGI

<fastCgi>
    <application fullPath="C:\Program Files (x86)\PHP\v7.1\php-cgi.exe" />
</fastCgi>

Система.веб-сервер / обработчики

<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.

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