光影工作室

【转】Ubuntu11.04同时运行php5.2和php5.3版本

发布时间:5年前热度: 6090 ℃评论数:

步骤:
1.安装apache和php
sudo apt-get install apache2
sudo apt-get install php5 php5-dev libapache2-mod-php5
sudo /etc/init.d/apache2 reload

这时访问 http://localhost 应该会看到 It works! 说明apache已经安装成功了。
再测试php,在/var/www下创建测试文件 testphp.php :
echo “<?php phpinfo(); ?>” | sudo tee /var/www/testphp.php

然后访问 http://localhost/testphp.php ,应该会看到php5.3的信息,说明php也安装成功了。
2.安装mysql,并让apache和php支持mysql
sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo /etc/init.d/apache2 restart
3.安装php5.2
下载php5.2.17,下载地址:http://www.php.net/get/php-5.2.17.tar.gz/from/a/mirror
进入下载文件的保存目录解压:
tar -zxf php-5.2.17.tar.gz

然后进入php-5.2.17目录:
cd php-5.2.17

下载的文件需要手工编译,所以要先安装必要的编译工具:
sudo apt-get install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev

然后配置并安装php5.2到 /opt/php5.2 目录:
创建软链接:
ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
ln -s /usr/lib/i386-linux-gnu/libpng.so /usr/lib/libpng.so
然后配置
./configure –prefix=/opt/php5.2 –with-config-file-path=/opt/php5.2 –with-mysqli –with-mysql –with-curl –with-gd –with-zlib –enable-mbstring –with-mcrypt –with-jpeg-dir –enable-cli –enable-fastcgi –enble-discard-path –enable-force-cgi-redirect

然后编译
make

然后安装
sudo make install
这样php5.2就成功安装到 /opt/php5.2 目录下了,可以用下面的命令测试一下
/opt/php5.2/bin/php /var/www/testphp.php 

可以看到php的版本上5.2.17
4.安装Apache for FastCGI,的目的是让apache可以通过FastCGI来运行php5.2
sudo apt-get install libapache2-mod-fastcgi
启用必要的模块
sudo a2enmod cgi
sudo a2enmod fastcgi
sudo a2enmod actions
然后重启apache
sudo /etc/init.d/apache2 restart
创建一个bash脚本,使apache可以方便的调用FastCGI。方法:
在 /usr/lib/cgi-bin/ 下创建一个名为 php52-cgi 的文件,并将下面的内容写入该文件:
#!/bin/sh
PHPRC=”/opt/php5.2/”
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php5.2/bin/php-cgi

然后为该文件赋予执行权限:
sudo chmod +x /usr/lib/cgi-bin/php52-cgi
注意:/opt/php5.2目录下现在还没有php.ini文件,需要手工创建一份,可以从下载解压出来的php-5.2.17目录下复制 php.ini-recommend 到 /opt/php5.2 目录下并重命名为 php.ini
cp php-5.2.17/php.ini-recommended /opt/php5.2/php.ini
下面可以测试一下我们的php52-cgi是否能正常工作了:
/usr/lib/cgi-bin/php52-cgi < /var/www/testphp.php

如果一切正常的话,将会看到html源代码格式的phpinfo页面。
为了方便在创建虚拟主机的时候告诉apache是否应该执行5.2版本的php,我们可以在 /etc/apache2/ 目录下创建一个名为 php52.conf 的配置文件,该文件的内容如下:
#include for virtual hosts that need to run php-5.2
<FilesMatch “\.php”>
   SetHandler application/x-httpd-php5
</FilesMatch>
ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi
Action application/x-httpd-php5 /php52-cgi
AddHandler application/x-httpd-php5 .php
这样我们就完成了必要的配置,该是看看效果的时候了。
修改 /etc/hosts 文件,添加两个本地地址
127.0.0.1        php52.localhost php53.localhost
然后在 /etc/apache2/sites-available 目录下创建两个虚拟主机 php52 和 php53,其内容分别是:

php52
<VirtualHost *:80>
ServerAdmin webmaster@localhost 
ServerName php52.localhost 
DocumentRoot /var/www 
#Include php5.2 
Include php52.conf

ErrorLog /var/log/apache2/error.log 
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg. LogLevel debug 
CustomLog /var/log/apache2/access.log combined 
</VirtualHost>
php53
<VirtualHost *:80>
ServerAdmin webmaster@localhost 
ServerName php53.localhost 
DocumentRoot /var/www 

ErrorLog /var/log/apache2/error.log 
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg. LogLevel debug 
CustomLog /var/log/apache2/access.log combined 
</VirtualHost>
然后启用这两个站点,并重启apache使配置生效:
cd /etc/apache2/sites-enabled
sudo ln -s ../sites-available/php52 php52
sudo ln -s ../sites-available/php53 php53
sudo /etc/init.d/apache2 restart
这时在地址栏里分别输入 http://php52.localhost/testphp.php 和 http://php53.localhost/testphp.php
就可以看到两个站点分别上运行在php5.2下和php5.3下了。

环境配置好了,开始享受开发的乐趣吧 : )

ubuntu,配置