2017-02-03 60 views
7

Niedawno opracowałem instalator dla aplikacji internetowej (Tak, aplikacja internetowa z instalatorem), używając Wix Tool Set.PHP (lub cokolwiek innego) Konfiguracja CGI w web.config IIS

Kreator prowadzi użytkownika, aby uzyskać wszystkie podstawowe informacje konieczność strona dla instalacji, a wygląda jak poniżej:

enter image description here

Korzystanie akcje niestandardowe na końcu instalacji I skonfigurowany dynamicznie IIS do obsługi CGI przy użyciu the documentation, aby skonfigurować FastCGI na Host PHP, Python, Aplikacje. Istnieje wiele kroków i rozwoju, aby osiągnąć te wyniki, ale problem jest tutaj:

Zainstalowałem aplikację i wszystko działa poprawnie, ale jeśli odinstaluję lub zainstaluję inną instancję lub inną aplikację sieciową, to programy obsługi skonfigurowane przez IIS są jak globalnie i zawsze wskazuje na pierwszy zainstalowany. (Problem pojawia się, gdy odinstalować aplikację) applicationHost.config się w C: \ Windows \ System32 \ inetsrv \ config że jest konfiguracja IIS ma "config" jak globalny.

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

Moje pytanie brzmi, czy jest jakiś sposób, żeby zrobić tę konfigurację dla każdej witryny internetowej do web.config? Próbowałem wszystkiego bez powodzenia.

+1

Proszę nie używać obrazów do zawartości tekstowej. – Andy

+0

@AndyC dziękuję! edytowane – wrivas

Odpowiedz

3

Więc jeśli dobrze rozumiem, chcesz przenieść obsługę php z poziomu serwera/witryny do poszczególnych aplikacji. Dlaczego nie dodajesz pliku web.config do folderu aplikacji php i nie przenosisz tam programów obsługi aplikacji.

  1. https://stackoverflow.com/a/35332431/1766402 - sprawdź tę odpowiedź (Mam nadzieję, że masz włączony CGI w IIS?). Aby to zrobić za pomocą wix, możesz dodać następujące polecenie w akcji niestandardowej i wykonać. Spowoduje to odblokowanie nadrzędnego pliku konfiguracyjnego.

% katalog_systemu_Windows% \ System32 \ inetsrv \ appcmd.exe odblokowania konfiguracji "NazwaLokacji/App1" -section: system.webServer/koparki

  1. w folderze aplikacji PHP (powiedzmy c: \ php app1 \) utworzyć plik web.config o następującej treści:

<?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. Teraz, jeśli spojrzeć na swój wniosek w Menedżerze IIS powinieneś zobaczyć coś takiego (APP Dir -> Handler Mappings)

enter image description here

Uwaga "lokalny" potwierdza, że ​​ustawienie pochodzi z lokalnego pliku web.config, a nie z pliku applicationhost.config.

+0

Próbuję tego i zawsze otrzymuję: Ta sekcja konfiguracji nie może być użyta na tej ścieżce. Dzieje się tak, gdy sekcja jest zablokowana na poziomie nadrzędnym. Domyślnie blokowanie (overrideModeDefault = "Deny") lub jawnie ustawione przez znacznik położenia z overrideMode = "Deny" lub starszym allowOverride = "false". – wrivas

+0

Wygląda na to, że sekcja obsługi jest zablokowana na poziomie nadrzędnym. Czy możesz wypróbować zaktualizowaną sekcję w odpowiedzi? – Isaiah4110

+0

Ta sekcja może zostać odblokowana w pliku applicationHost.config, ale celem jest uniknięcie interwencji użytkownika. Jak już powiedziałem, wypróbowałem wiele trików bez powodzenia :( – wrivas