Apache-2.2

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

  • October 3, 2012

我需要在帶有 Apache 2.2.23 的 Windows 7 x64 上執行 PHP 5.4.7 和 5.3.17。這是我的虛擬主機配置:

<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>

PHPIniDirandLoadModule指令工作正常,在我的腳本中使用可以phpinfo()列印正確的 PHP 版本。

但是我需要載入擴展,這就是失敗的地方。php_value extension_dir應該是C:/WAMP/PHP54/ext,但它是(預設一個)C:/php

我在這裡缺少什麼?

編輯:當然我可以直接設置這個值C:/WAMP/PHP54/php.ini,但我更喜歡使用虛擬主機配置傳遞它:

; 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 值有效。

引用自:https://serverfault.com/questions/434426