【问题标题】:PHP (or whatever) CGI configuration in web.config IISweb.config IIS 中的 PHP(或其他)CGI 配置
【发布时间】:2017-02-03 20:23:22
【问题描述】:

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

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

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

我安装了应用程序,一切正常,但是,如果我卸载或安装另一个实例或另一个 WebApplication,IIS 配置的处理程序就像全局一样,总是指向第一个安装的。 (当我卸载应用程序时出现问题) applicationHost.config 位于 C:\Windows\System32\inetsrv\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 中?我一直在尝试所有的东西都没有成功。

【问题讨论】:

  • 文字内容请勿使用图片。
  • @AndyC 谢谢!已编辑

标签: php iis wix cgi fastcgi


【解决方案1】:

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

  1. https://stackoverflow.com/a/35332431/1766402 - 检查这个答案(我希望你在 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>
  1. 现在,如果您在 IIS 管理器中查看您的应用程序,您应该会看到类似这样的内容(App Dir -> Handler Mappings)

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

【讨论】:

  • 我尝试了这个并且总是得到:这个配置部分不能在这个路径上使用。当该部分锁定在父级别时会发生这种情况。锁定是默认情况下 (overrideModeDefault="Deny"),或者由具有 overrideMode="Deny" 或旧版 allowOverride="false" 的位置标记显式设置。
  • 看起来您的处理程序部分已锁定在父级。您可以尝试答案中的更新部分吗?
  • 此部分可以在 applicationHost.config 中解锁,但目的是避免用户干预。正如我所说,我尝试了很多技巧但没有成功:(
  • 您可以使用自定义操作在 wix 中添加解锁命令(我添加到答案中)吗?
  • 是的,现在我有另一个错误,但我可以处理它。在 [iis.net/configreference/system.webserver/fastcgi] 和你的帮助下。谢谢
猜你喜欢
  • 2016-02-21
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2018-01-18
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多