我需要PHP 5.4.7和5.3.17在Windows 7 x64和Apache 2.2.23上运行。 这是我的虚拟主机configuration:
<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设置这个值,但我更喜欢使用虚拟主机configuration传递它:
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: extension_dir = "C:/WAMP/PHP54/ext"
有几件事情在这里。
在同一个Apache进程下同时运行两个版本的PHP通常是通过CGI完成的。 但是你似乎试图加载PHP作为Apache模块(为什么LoadModule行在VirtualHost中)?
php_value和相关的指令只在PHP作为Apache模块运行(不在CGI下)时才起作用。 所以,如果你是在CGI下运行PHP,只有php.ini值才能工作。