2011-03-03 61 views
3

我的apache2和PHP5.2作爲模塊安裝在httpd.conf:不同 「的LoadModule php5_module」 爲apache的虛擬主機指令

LoadModule php5_module "c:/php/php5apache2_2.dll" 
PHPIniDir "C:/php/" 

另外我有PHP5.3在C:/ php53文件夾。

是否可以爲不同的虛擬主機使用不同的模塊?

現在我必須更改LoadModule和PHPIniDir指令並重新啓動apache。

+2

加載所需的所有模塊,將它們分配給不同的處理程序,並將.php設置爲與每個虛擬主機中所需的PHP版本關聯的處理程序進行分析。您無法有選擇地加載不同的模塊,因爲一個Apache進程將爲所有主機提供請求。 – 2011-03-03 07:41:34

+0

嘿Dan,你能給我們介紹一下你提出的這個配置的例子嗎? – 2013-03-12 20:12:40

回答

1

我敢肯定,你不能同時加載兩個版本的PHP到Apache。 但是可以使用mod_fcgid來運行兩個不同版本的PHP。

我現在沒有Windows機器,所以我不能驗證它是否有效。 無論如何,我發現一些說明如何在這裏從Windows上設置FastCGI和PHP http://fuzzytolerance.info/blog/apache-mod_fcgid-and-php-on-windows/

有一個例外,如果你想運行不同的版本。 你不應該添加FCGI東西在全局部分,但每個虛擬主機部分,而不是

它應該是這個樣子:

<VirtualHost *:80> 
    ServerName site1 
    ServerAdmin [email protected] 
    DocumentRoot "c:/www/site1" 

    <Directory "c:/www/site1/web"> 
    Options +ExecCGI 
    AllowOverride All 

    ## FastCGI stuff 
    AddHandler fcgid-script .php 
    FcgidInitialEnv PHPRC "c:/php52" 
    FcgidWrapper "c:/php52/php-cgi.exe" .php 
    AddType application/x-httpd-php .php 

    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 

然後設置FcgidInitialEnv PHPRC所以php.ini文件所在的目錄, FcgidWrapper添加到該PHP版本的php-cgi.exe文件中。

您必須對所有您希望運行PHP的VirtualHost重複此步驟。但是現在您可以爲每個主機定製PHPRC路徑和可執行文件,以便可以運行不同的版本並讓它們使用不同的配置。

+0

我按照這些指示,出現了一個問題: ''''''''''''''FcgidInitialEnv'不允許在''中。 當我Google搜索解決方案時,我發現將'FcgidInitialEnv'指令移出''的建議。但是,當我這樣做時,我仍然運行舊版本的PHP。 想法? – PeteK68 2013-06-06 22:59:49