2017-02-03 63 views
7

我最近開發了一個安裝程序爲Web應用程序(是的,有安裝Web應用程序),使用Wix Tool SetPHP(或其他)CGI配置IIS

該向導將引導用戶獲得的所有基本信息的站點需要安裝,看上去象下面這樣:

enter image description here

在安裝結束使用自定義操作我動態配置IIS使用the documentation來處理CGI,將FastCGI配置爲託管PHP,Python,應用程序。有很多步驟和發展,以實現這一結果,但問題在這裏:

我安裝了應用程序,一切工作正常,但是,如果我卸載或安裝另一個實例或另一個WebApplication由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?我一直在嘗試所有的東西沒有成功。

+1

請勿將圖片用於文字內容。 – Andy

+0

@AndyC謝謝你!編輯 – wrivas

回答

3

所以,如果我的理解對不對,你想從服務器/網站級別個人移動應用PHP處理程序。爲什麼不在你的php應用程序文件夾中添加一個web.config文件,並在那裏移動應用程序特定的處理程序。

  1. https://stackoverflow.com/a/35332431/1766402 - 檢查這個答案(我希望你在IIS中啓用CGI?)。要通過wix執行此操作,您可以在自定義操作中添加以下命令並執行。這將解鎖父配置文件。

%WINDIR%\ SYSTEM32 \ INETSRV \ Appcmd.exe的解鎖配置 「網站名稱/ APP1」 -section:system.webServer /處理程序

  • 在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> 
    
  • 現在,如果你看一下IIS管理器中的應用程序,你應該看到這樣的事情(應用迪爾 - >處理程序映射)
  • enter image description here

    注意「本地」這確認該設置來自您的本地web.config而不是來自applicationhost.config文件。

    +0

    我試試這個,總是得到:這個配置節不能用在這個路徑。當部分鎖定在父級別時,會發生這種情況。鎖定可以是默認的(overrideModeDefault =「Deny」),也可以是帶有overrideMode =「Deny」或legacy allowOverride =「false」的位置標籤。 – wrivas

    +0

    看起來像您的處理程序部分鎖定在父級別。你能否在答案中嘗試更新的部分? – Isaiah4110

    +0

    此部分可以在applicationHost.config中解鎖,但目標是避免用戶干預。正如我所說,我已經嘗試了很多技巧,但沒有成功:( – wrivas