“scriptProcessor 无法找到应用程序配置”访问子文件夹中的 PHP 脚本时

“scriptProcessor 无法找到应用程序配置”访问子文件夹中的 PHP 脚本时

我在 IIS 7.5 上遇到 php 配置问题。

这是在 Win7 上使用 MS Web PI 进行的几乎全新安装。

我创建了一个简单的 php 测试页面。有用在根级别http://localhost/test.php和第一个子级别中http://localhost/site/test.php,但不在中http://localhost/site/subfolder/test.php,我收到 HTTP 500 错误:
<handler> scriptProcessor could not be found in <fastCGI> application configuration

一切似乎都按照指定的方式配置http://www.iis.net/ConfigReference/system.webServer/fastCgi/application

是否存在某种过滤器,可以在特定文件夹级别禁用处理/或仅在前 2 个级别启用它?

我应该检查什么?

答案1

事实证明,我复制了之前设置中的文件。无法正常工作的子文件夹中的 web.config 指定了不同的 php-cgi.exe。

基本上我现在有 64 位系统,并且 php 可执行文件在 中C:\Program Files (x86)\PHP\v5.3\php-cgi.exe,我在 IIS 管理器中通过转到非工作文件夹并打开处理程序映射并检查 的值发现了它PHP_via_FastCGI,那时我注意到旧的可执行文件在C:\Program Files\PHP...

感谢您的关注:)希望这对某些人有所帮助。

答案2

如果你遇到此问题,请确保你的 web.config 处理程序配置与 fastCGI 设置池之一匹配,例如,如果你的池是这个

        <fastCgi>
            <application fullPath="C:\Users\user\Downloads\php7.4\php-cgi.exe" arguments="-d open_basedir=C:\Users\user\Documents\YurWallet\public" maxInstances="0" instanceMaxRequests="10000">
                <environmentVariables>
                    <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
                </environmentVariables>
            </application>
            <application fullPath="C:\Users\user\Downloads\php7.4\php-cgi.exe" arguments="-d open_basedir=C:\Users\user\Documents\ReadyCash\ReadyCash.Agent.Profiles" maxInstances="0" instanceMaxRequests="10000">
                <environmentVariables>
                    <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
                </environmentVariables>
            </application>
        </fastCgi>

然后使用例如你网站中的第二个池,那么你的句柄定义必须匹配完整路径和参数的组合,即

    <handlers accessPolicy="Read, Script">
      <add name="PHP via FastCGI"
        path="*.php" verb="*"
        modules="FastCgiModule"
        scriptProcessor="C:\Users\user\Downloads\php7.4\php-cgi.exe|-d open_basedir=C:\Users\user\Documents\ReadyCash\ReadyCash.Agent.profiles"
        resourceType="Unspecified"
        requireAccess="Script" />
    </handlers>

否则 IIS 将会抱怨找不到处理器

相关内容