2011-03-03 93 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