Apache-2.2
同時使用不同的 PHP 版本,php_value extension_dir 不起作用?
我需要在帶有 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>
PHPIniDir
andLoadModule
指令工作正常,在我的腳本中使用可以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 值有效。