在web.config IIS中的PHP(或其他)CGI配置

时间:2017-02-03 20:23:23

标签: php iis wix cgi fastcgi

我最近使用Wix Tool Set为Web应用程序(是的,带安装程序的Web应用程序)开发了一个安装程序。

该向导指导用户获取站点安装所需的所有基本信息,如下所示:

enter image description here

在安装结束时使用自定义操作我使用the documentation动态配置IIS处理CGI,将FastCGI配置为托管PHP,Python,应用程序。有很多步骤和开发来实现这个结果,但问题在于:

我安装了应用程序,一切正常,但是,如果我卸载或安装另一个实例或其他WebApplication,IIS配置的处理程序就像全局一样,并始终指向第一个安装的。 (卸载应用程序时出现问题) 位于 C:\ Windows \ System32 \ inetsrv \ config 中的 applicationHost.config 是IIS的配置,具有" config"像全球一样。

<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 个答案:

答案 0 :(得分:4)

因此,如果我理解正确,您希望将php处理程序从服务器/网站级别移动到单个应用程序。为什么不在php应用程序文件夹中添加web.config文件并在那里移动特定于应用程序的处理程序。

  1. https://stackoverflow.com/a/35332431/1766402 - 检查这个答案(我希望你在IIS中启用了CGI?)。要通过wix执行此操作,您可以在自定义操作中添加以下命令并执行。这将解锁父配置文件。
  2.   

    %windir%\ system32 \ inetsrv \ appcmd.exe解锁配置“SiteName / app1”   -section:system.webServer /处理

    1. 在PHP应用程序文件夹中(假设c:\ php \ app1)创建一个包含以下内容的web.config文件:
    2.   

      <?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管理器中查看您的应用程序,您应该会看到类似这样的内容(App Dir - &gt; Handler Mappings)
      2. enter image description here

        注意“local”这确认该设置来自您的本地web.config而不是来自applicationhost.config文件。