Конфигурация PHP (или чего-либо еще) CGI в web.config IIS

Недавно я разработал установщик для веб-приложения (да, веб-приложение с установщиком), используя Набор инструментов Wix.

Мастер помогает пользователю получить всю основную информацию, необходимую сайту для установки, и выглядит следующим образом:

введите описание изображения здесь

Используя пользовательские действия в конце установки, я динамически настраивал IIS для обработки CGI, используя документация, настроить FastCGI для хоста PHP, Python, Приложения. Есть много шагов и развития для достижения этих результатов, но проблема здесь:

Я установил приложение, и все работает нормально, но, если я удалю или установлю другой экземпляр или другое веб-приложение, обработчики, настроенные IIS, будут похожи глобально и всегда будут указывать на первый установленный. (Проблема возникает при удалении приложения)
applicationHost.config находится в C: \ Windows \ System32 \ Inetsrv \ Config то есть конфигурация IIS имеет «конфиг» как глобальный.

<handlers accessPolicy="Read, Script">
<add name="PHP-FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:\CIM_dev\bin\php-v5.6\php-cgi.exe" resourceType="Either" />
<add name="CGI-exe_2" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
<add name="TRACEVerbHandler2" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
<add name="OPTIONSVerbHandler2" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
<add name="StaticFile2" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>

У меня вопрос, есть ли способ сделать эту конфигурацию для каждого веб-сайта в web.config? Я пытался все вещи без успеха.

8

Решение

Так что, если я правильно понимаю, вы хотите переместить обработчики php с уровня сервера / веб-сайта на отдельные приложения. Почему бы вам не добавить файл web.config в папку вашего приложения php и переместить туда специальные обработчики приложения.

  1. https://stackoverflow.com/a/35332431/1766402 — проверьте этот ответ (я надеюсь, что вы включили CGI в IIS?). Чтобы сделать это через wix, вы можете добавить следующую команду в пользовательское действие и выполнить. Это разблокирует родительский файл конфигурации.

% windir% \ system32 \ inetsrv \ appcmd.exe разблокировать конфигурацию «SiteName / app1» — раздел: system.webServer / handlers

  1. В папке приложения PHP (скажем, c: \ php \ app1) создайте файл web.config со следующим содержимым:
<?xml version="1.0"?>
<configuration>
<system.webServer>
<handlers>
<add name="PHPviaFastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\axputhe\Documents\PHP\php-cgi.exe" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
  1. Теперь, если вы посмотрите на свое приложение в IIS Manager, вы должны увидеть что-то вроде этого (App Dir -> Handler Mappings)

введите описание изображения здесь

Обратите внимание, что «local» подтверждает, что этот параметр исходит из вашего локального файла web.config, а не из файла applicationhost.config.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]