我希望能够在运行Ubuntu 12.04的开发箱上运行多个php版本。我要实现的是,当我使用本地主机作为域时,使用默认值(假设php 5.3.17)。当我使用547.localhost作为域php 5.4.7时。我看过一些使用fastcgi使其工作的教程,但是直到现在我还无法使其工作。我看了这些教程:
- http://dbforch.wordpress.com/2010/05/21/apache2-fastcgi-multiple-php-versions-ubuntulucid-10-04/
- http://www.metod.si/multiple-php-versions-with-apache-2-fastcgi-phpfarm-on-ubuntu/
据我所知,我已经完成了所有必要的工作。问题是php根本无法运行。当我转到http://localhost/somephpfile.php
它时,仅输出php文件的源。这同样适用http://547.localhost/somephpfile.php
。
我将细分我采取的步骤,希望有人能够发现我错过的内容。
- 首先,我使用安装了默认的灯架
sudo apt-get install lamp-server^ phpmyadmin
。在此之后,我有了一个运行中的开发服务器,该服务器运行php的存储库版本。 - 然后,我使用phpfarm创建了两个php安装,一个用于5.3.17,一个用于5.4.7。phpfarm的位置为
/etc/php/phpfarm
,因此可执行文件位于/etc/php/phpfarm/inst/php-{version}/bin
- 然后我为apache和disabe mod_php启用suaxec和fastcgi
sudo a2enmod fastcgi actions suexec && sudo a2dismod php5
接下来,我编辑
/etc/apache2/mods-enabled/fastcgi.conf
为:<IfModule mod_fastcgi.c> FastCgiIpcDir /var/lib/apache2/fastcgi FastCgiWrapper /usr/lib/apache2/suexec FastCgiConfig -idle-timeout 110 -killInterval 120 -pass-header HTTP_AUTHORIZATION -autoUpdate ScriptAlias /php-fcgi/ /var/www/cgi-bin/ </IfModule>
然后,在其中
/var/www/
创建了一个文件夹cgi-bin并在此文件夹中创建了两个文件,分别用于以下两个php版本(我只为5.3.17显示一个/var/www/php5317.fcgi
):#!/bin/sh # you can change the PHP version here. version="5.3.17" # php.ini file location, */php-5.2.13/lib equals */php-5.2.13/lib/php.ini. PHPRC=/etc/php/phpfarm/inst/php-${version}/lib/php.ini export PHPRC PHP_FCGI_CHILDREN=3 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS # which php-cgi binary to execute exec /etc/php/phpfarm/inst/php-${version}/bin/php-cgi
最后一步是创建虚拟主机。最后,我在以下三个文件中
/etc/apache2/sites-enabled
:000-default,php5.3.17和php5.4.7,内容如下:默认:
<VirtualHost *:80> ServerName localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php5317.fcgi </Directory> </VirtualHost>
php5.3.17:
<VirtualHost *:80> ServerName 5317.localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php5317.fcgi </Directory> </VirtualHost>
php5.4.7:
<VirtualHost *:80> ServerName 547.localhost DocumentRoot /var/www <Directory "/var/www"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all AddHandler php-cgi .php Action php-cgi /php-fcgi/php547.fcgi </Directory> </VirtualHost>
最后,我将/ etc / hosts更改为
127.0.0.1 localhost 127.0.0.1 547.localhost 127.0.0.1 5317.localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
现在,我希望事情能够奏效,但可悲的是,事实并非如此。取而代之的是,一个php文件通过php运行,它只输出原始文件。
这里一定有我想念的东西,但是我已经经历了很多次了,所以我不知道哪里出了问题。
/var/www/cgi-bin/php-cgi-5.4.7
到/var/www/cgi-bin/php54.fcgi
例如或只/var/www/cgi-bin/php.fcgi
。您可以检查是否有帮助?仅用于5.4.7版本。