我需要在 Windows 7 x64 上运行 PHP 5.4.7 和 5.3.17,并使用 Apache 2.2.23。这是我的虚拟主机配置:
<VirtualHost *:80>
DocumentRoot "C:/WAMP/Apache/htdocs/php54"
ServerName php54.local
PHPIniDir "C:/WAMP/PHP54"
LoadModule php5_module "C:/WAMP/PHP54/php5apache2_2.dll"
php_value extension_dir "C:/WAMP/PHP54/ext"
<Directory "C:/WAMP/Apache/htdocs/php54">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
和PHPIniDir
指令LoadModule
工作正常,并且phpinfo()
在我的脚本中使用可以打印正确的 PHP 版本。
但是我需要加载扩展,而这就是失败的地方。php_value extension_dir
应该是C:/WAMP/PHP54/ext
但它是(默认的)C:/php
。
我这里遗漏了什么?
编辑:当然我可以直接在中设置这个值C:/WAMP/PHP54/php.ini
,但我更喜欢使用 vhost 配置传递它:
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "C:/WAMP/PHP54/ext"
答案1
这里有几件事情不对劲。
在同一个 Apache 进程下同时运行两个版本的 PHP 通常通过 CGI 来完成。但你似乎试将 PHP 作为 Apache 模块加载(为什么 VirtualHost 中会有 LoadModule 行)?
php_value
和相关指令仅在 PHP 作为 Apache 模块运行时(不在 CGI 下)才有效。因此,如果您在 CGI 下运行 PHP,则只有 php.ini 值有效。