2017-02-03 8 views
7

Ich habe vor kurzem ein Installationsprogramm für eine Webanwendung (Ja, Web Application mit einem Installer) mit Wix Tool Set entwickelt.PHP (oder was auch immer) CGI-Konfiguration in web.config IIS

Der Assistent führt den Benutzer zur Installation alle grundlegenden Informationen der Website Notwendigkeit, zu erhalten und sieht aus wie folgt:

enter image description here

Mit benutzerdefinierte Aktionen am Ende der Installation konfiguriert ich dynamisch den IIS zu Handler CGI mit the documentation, um FastCGI zu Host PHP, Python, Anwendungen zu konfigurieren. Es gibt eine Menge von Schritten und Entwicklung, um dieses Ergebnis zu erreichen, aber das Problem ist hier:

Ich habe die Anwendung installiert und alles funktioniert gut, aber, wenn ich eine andere Instanz oder eine andere WebApplication deinstalliere oder die Handler von IIS konfigurieren wie global und zeigt immer auf den ersten installierten. (Das Problem tritt auf, wenn ich die Anwendung deinstalliere) Die applicationHost.config befindet sich in C: \ Windows \ System32 \ inetsrv \ config das ist die Konfiguration von IIS hat die "Config" wie global.

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

Meine Frage ist, gibt es eine Möglichkeit, diese Konfiguration für jede Website in den web.config zu tun? Ich habe alles ohne Erfolg versucht.

+1

Bitte verwenden Sie keine Bilder für Textinhalt. – Andy

+0

@AndyC danke! bearbeitet – wrivas

Antwort

3

Also, wenn ich es richtig verstehe, möchten Sie PHP-Handler von Server/Website-Ebene zu einzelnen Anwendungen verschieben. Warum fügst du keine web.config-Datei in deinen php-Anwendungsordner ein und verschiebst dort die anwendungsspezifischen Handler.

  1. https://stackoverflow.com/a/35332431/1766402 - Überprüfen Sie diese Antwort (ich hoffe, Sie haben CGI in IIS aktiviert?). Um dies über wix zu tun, können Sie den folgenden Befehl innerhalb einer benutzerdefinierten Aktion hinzufügen und ausführen. Dadurch wird die übergeordnete Konfigurationsdatei entsperrt.

% windir% \ system32 \ inetsrv \ appcmd.exe Unlock-config "AltraSocial/app1" -Abschnitt: system.webServer/Handler

  1. innerhalb des PHP-Anwendungsordner (sagen wir mal c: \ php \ app1) eine web.config-Datei mit folgendem Inhalt:

<?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. Nun, wenn Sie in Ihrer Anwendung im IIS-Manager aussehen sollten Sie etwas ähnliches sehen (App Du -> Handler Mappings)

enter image description here

Hinweis "lokal" Dies bestätigt, dass die Einstellung von Ihrer lokalen web.config und nicht von der Datei applicationhost.config stammt.

+0

Ich versuche das und bekomme immer: Dieser Konfigurationsabschnitt kann nicht auf diesem Pfad verwendet werden. Dies geschieht, wenn der Abschnitt auf einer übergeordneten Ebene gesperrt ist. Sperren ist entweder standardmäßig (overrideModeDefault = "Verweigern") oder explizit durch ein location-Tag mit overrideMode = "Deny" oder dem Legacy-allowOverride = "false" festgelegt. – wrivas

+0

sieht so aus, als ob Ihre Handler-Sektion auf der übergeordneten Ebene gesperrt ist. Können Sie den aktualisierten Abschnitt in der Antwort versuchen? – Isaiah4110

+0

Dieser Abschnitt kann in applicationHost.config entsperrt werden, die Ziele bestehen jedoch darin, Benutzereingriffe zu vermeiden. Wie gesagt, ich habe viele Tricks ohne Erfolg versucht :( – wrivas

Verwandte Themen