我在 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 将会抱怨找不到处理器