同时使用不同版本的 PHP,php_value extension_dir 不起作用?

同时使用不同版本的 PHP,php_value extension_dir 不起作用?

我需要在 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 值有效。

相关内容