【发布时间】:2016-11-25 00:14:55
【问题描述】:
我的 Microsoft Windows Server 2008 Standard 6.0 SP2 上有 IIS 7.0 和两个版本的 PHP v5 和 v7。问题是,PHP7 或 IIS 试图将 PHP5 的 php.ini 用于 IIS“网站”。
所以在命令行上一切正常:
X:\>php -v
PHP 7.0.2 (cli) (built: Jan 6 2016 12:59:59) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
X:\>php --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File: D:\Data\Programme\php7\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
但在 IIS 管理器和phpinfo() 输出中没有:
我认为,这是一个 PHP (cgi-fcgiSAPI) 问题,不是一个 IIS 问题(但不确定)。
如何在 Windows Server 2008 上为 PHP CGI/FastCGI SAPI 设置正确的php.ini?
还通过注册表尝试过,但没有帮助:
【问题讨论】:
-
我知道我必须在 Apache、 下的 Linux 上处理类似的情况,但我想知道是否可能会采用同样的方法在这里使用。基本上,我创建了两个单独的“CGI 文件”,每个文件基本上都归结为:
exec /path/to/php-cgi --php-ini /path/to/php.ini $PATH_TRANSLATED。也就是说,命令文件显式调用 PHP 解释器并明确告诉它使用哪个php.ini文件。在我看来,直觉上可以在这里制作类似的方法。 . . (而且,P.S.:“我也认为是cgi-fcgi。”) -
考虑到我之前关于这是 FastCGI 的评论(无论主机环境如何......),我知道可以指定“单独的 pools 的 FastCGI worker-bees”,并将传入的请求定向到适当的请求。您应该能够以某种方式设置两个池:一个用于 PHP5,另一个用于 PHP7。 . .希望我能更具体一些,但我最近没有做过 Windows 托管的项目。
-
@MikeRobinson 感谢您也尝试在这个问题上提供帮助!但再一次:问题不在于使用了错误的 PHP 版本(或者在这种情况下是错误的
php-cgi.exe)。问题是,某处已配置,D:\path\to\php7\php-cgi.exe必须从D:\path\to\php5\php.ini(而不是D:\path\to\php7\php.ini)获取其配置。所以我必须找出为什么它的配置如此奇怪,以及如何改变它。 -
我承认我的想法可能与这里无关,但请注意,在我的脚本中我确实指定了 PHP 可执行文件的确切身份和
--php-ini。 Apache 只“启动一个指定的 CGI 进程”,并且它指定了这两个东西。 FastCGI 的驱动程序脚本可能类似。
标签: php iis iis-7 windows-server-2008 fastcgi