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

wri*_*vas 8 php iis cgi fastcgi wix

我最近使用Wix工具集开发了一个Web应用程序的安装程序(是的,带有安装程序的Web应用程序).

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

在此输入图像描述

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

我安装了应用程序,一切正常,但是,如果我卸载或安装另一个实例或其他WebApplication,IIS配置的处理程序就像全局一样,并始终指向第一个安装.(卸载应用程序时出现问题)位于C:\ Windows\System32\inetsrv\config中的applicationHost.config是IIS的配置,其"config"类似于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>
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法为web.config中的每个网站进行此配置?我一直在努力尝试所有的东西而没有成功.

Isa*_*110 5

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

  1. /sf/answers/2473270201/ - 检查这个答案(我希望你在 IIS 中启用了 CGI?)。要通过 wix 执行此操作,您能否在自定义操作中添加以下命令并执行。这将解锁父配置文件。

%windir%\system32\inetsrv\appcmd.exe 解锁配置“SiteName/app1”-section: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>
Run Code Online (Sandbox Code Playgroud)
  1. 现在,如果您在 IIS 管理器中查看您的应用程序,您应该会看到类似这样的内容(App Dir -> Handler Mappings)

在此处输入图片说明

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