我一直在努力尝试在 IIS 6 上运行任何类型的 PHP。不知怎么的,我设法使用 php5isapi.dll 文件成功运行了版本 5.1.4。但是,我想升级网站以开始使用内容管理系统。我以前从未深入研究过 CMS,所以我愿意接受易于使用的程序。我目前正在研究 TomatoCMS 和 ImpressCMS - 但这不是重点。
我以前从未使用过 PHP 安装,我想我已经熟悉它的工作原理了。但是目前的情况是这样的。微软的 Web Platform Installer 2.0 为我安装了 FastCGI。我需要升级到 PHP 5.3.1 以用于 CMS 系统。所以我下载了 Windows 安装程序并开始使用它。
在查阅了其他几篇博客文章后,我相信我知道它应该如何工作,但我目前没有运气。
设置
*.php 是 IIS 6 中为所有网站注册的扩展名(在 Win 2k3 上)。它调用的应用程序是 C:\Windows\system32\inetsvr\fcgiext.dll,正如它应该的那样。
fcgiext.ini 配置有正确的行:
[类型] php=PHP
[PHP] ext=C:\program files\PHP\php-cgi.exe
php.ini 文件也具有正确的配置。所有扩展都已禁用,我为 FastCGI 更改了正确的内容。并且所有内容都已使用 PATH 变量正确注册。一切都恰到好处。
但是当我在另一台计算机上启动“info.php”页面()时,出现以下错误:
FastCGI 错误 FastCGI 处理程序无法处理请求。
错误详情:
* Section [PHP] not found in config file.
* Error Number: 1413 (0x80070585).
* Error Description: Invalid index.
HTTP 错误 500 - 服务器错误。Internet 信息服务 (IIS)
快速 Google 搜索显示,就 INI 和 php 扩展的映射而言,我已正确设置了所有内容。我完全不知所措。有人有什么建议吗?虽然服务器托管三个小型网站,但我并不关心我必须对它做些什么才能使其正常工作。
答案1
在我的服务器上,我也遇到了让 FCGI 和 PHP 与 IIS6 和平共处的问题,尽管我遇到了不同的问题。根据您从 fcgiext.ini 文件中发布的内容,似乎您需要稍微不同的配置选项,即需要设置 ExePath 而不是 ext。以下是我托管数十个站点的生产服务器上 fcgiext.ini 文件中的片段:
[Types]
php:633747741=PHP-TEST
php=PHP-Production
[PHP-Production]
ExePath="C:\Program Files\PHP-5.2.10-nts-vc6\php-cgi.exe"
EnvironmentVars=PHPRC:C:\Program Files\PHP-5.2.10-nts-vc6
InstanceMaxRequests=1000
ActivityTimeout=1200
RequestTimeout=1800
MaxInstances=100
[PHP-TEST]
ExePath="C:\Program Files\php-5.2.12-nts\php-cgi.exe"
EnvironmentVars=PHPRC:C:\Program Files\php-5.2.12-nts
InstanceMaxRequests=5
ActivityTimeout=1200
RequestTimeout=1800
MaxInstances=100
我定义了两种不同的 PHP 配置(PHP-Production 和 PHP-TEST),并将默认配置设置为 PHP-Production。我已指定 IIS 站点号 633747741 使用配置 PHP-TEST。