我希望能够在运行Ubuntu 12.04的开发框中运行多个php版本。 我想要完成的是,当我使用localhost作为域默认使用(让我们说php 5.3.17)。 当我使用域名为php 5.4.7时使用547.localhost。 我见过一些教程,使用fastcgi这个工作,但直到现在我还没有能够得到它的工作。 我看过这些教程:
就我所知,我已经做了所需要的一切。 问题是,PHP根本不运行。 当我去http://localhost/somephpfile.php它只是输出的PHP文件的来源。 对于http://547.localhost/somephpfile.php 。
我会分解我所采取的步骤,希望有人能够发现我错过了什么。
sudo apt-get install lamp-server^ phpmyadmin安装了一个默认灯pipe栈。 在此之后,我有一个运行PHP版本的工作的开发服务器。 /etc/php/phpfarm ,所以可执行文件在/etc/php/phpfarm/inst/php-{version}/bin 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/我创build了一个文件夹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
最后一步是创build虚拟主机。 最后我在/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它只是输出原始文件。
这里肯定有一些我想念的东西,但是我已经经历了很多次,我弄不清楚哪里出了问题。
在你的虚拟主机中,你添加了一个处理程序,但是你没有设置处理程序,这就是为什么它没有被处理。 加:
<FilesMatch "\.php$"> SetHandler php-cgi </FilesMatch>
在每个虚拟主机文件之前</Directory> 。
我喜欢SeeDoubleYou这个简短的一步一步的概述,并且想亲自尝试一下。 缺less的是
sudo chmod +x /var/www/cgi-bin/*
vhost.conf文件中的Action php-cgi /php-fcgi/php<version>.fcgi行所vhost.conf sudo apt-get install apache2-suexec-pristine libapache2-mod-fastcgi
fastcgi.conf文件中的FastCgiWrapper /usr/lib/apache2/suexec行需要suexec可执行文件 FastCgiIpcDir /var/lib/apache2/fastcgi
FastCgiIpcDir /var/lib/apache2/fastcgi: already defined as "/var/lib/apache2/fastcgi" 对于任何尝试通过.htaccess或vhosts文件设置php_admin_value和php_value的人:这对于FCGI来说是不可能的。 相反,您可以使用.user.ini文件来设置特定于目录的php.iniconfiguration。