本页主题: Apache2 PHP4 與 PHP5 共存 打印 | 加为IE收藏 | 复制链接 | 收藏主题 | 上一主题 | 下一主题

admin
级别: 管理员


精华: 1
发帖: 4646
威望: 47 点
金钱: 23190 RMB
贡献值: 0 点
注册时间:2006-10-09
最后登录:2008-12-01

 Apache2 PHP4 與 PHP5 共存

主題:Apache2 PHP4 與 PHP5 共存
作業環境:FreeBSD 6.1-RELEASE
軟體版本:
Apache 2.0.59
PHP 4.4.4
PHP 5.2.0
mod_fastcgi 2.4.2
說明:要在 Apache 裡同時跑 PHP4 與 PHP5,原理很簡單就是 PHP4 跑 Apache module PHP5 跑 PHP-CGI
版本更新
2006.11.30 修正 php5 安裝的過程
2006.11.27 修正安裝參數、增加 extension 的安裝、增加討論頁面
2006.11.26 增加執行時的圖片
2006.11.25 版面調整、增加說明文字
2006.11.22 新增此頁面
討論頁面
1.安裝 Apache 2.0.59
[root@sun ~]#cd /usr/ports/www/apache20;make install clean
2.安裝 PHP4
[root@sun ~]#cd /usr/ports/www/mod_php4/ make config
[root@sun mod_php4]#make config
取消跟 CGI 有關的選項,如果用不到 Suhosin、ipv6 可以只保留 Apache 的選項
[X] APACHE    Build Apache module
[X] SUHOSIN    Enable Suhosin protection system
[X] IPV6      Enable ipv6 support
改變安裝路徑將 PHP4 安裝到 /usr/local/php4 下面
[root@sun mod_php4]#make PREFIX=/usr/local/php4 install clean
編輯 Apache 設定檔
[root@sun mod_php4]#joe /usr/local/etc/apache2/httpd.conf
加入 PHP4 的設定,並且將 Log 的等級調成 debug
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php .phtml .php3
LogLevel debug
3.試跑一下
檢查 Log files,有 PHP/4.4.4 with Suhosin-Patch configured 訊息表示 mod_php4 安裝成功
[root@sun ~]#apachectl start
[root@sun ~]#tail /var/log/http-error.log
[Sun Nov 19 00:24:55 2006] [notice] Apache/2.0.59 (FreeBSD) PHP/4.4.4 with Suhosin-Patch configured -- resuming normal operat
[Sun Nov 19 00:24:55 2006] [info] Server built: Nov 18 2006 21:35:46
[Sun Nov 19 00:24:55 2006] [debug] prefork.c(956): AcceptMutex: flock (default: flock)
4.安裝 mod_fastcgi
[root@sun ~]#cd /usr/ports/www/mod_fastcgi;make install clean
加入 mod_fastcgi 相關設定
[root@sun mod_fastcgi]#joe /usr/local/etc/apache2/httpd.conf
LoadModule modules/mod_fastcgi.so
FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi
5.試跑一下
檢查 Log files,如果出現 mod_fastcgi/2.4.2 configured 訊息表示安裝成功
[root@sun ~]#apachectl start
[root@sun ~]#tail /var/log/http-error.log
[Sun Nov 19 01:12:10 2006] [notice] Apache/2.0.59 (FreeBSD) PHP/4.4.4 with Suhosin-Patch mod_fastcgi/2.4.2 configured -- resu
[Sun Nov 19 01:12:10 2006] [info] Server built: Nov 18 2006 21:35:46
[Sun Nov 19 01:12:10 2006] [debug] prefork.c(956): AcceptMutex: flock (default: flock)
6.安裝 php5
因為安裝 php5 要用到 libxml2 所以要先安裝,否則用自訂安裝的方式會將 libxml2 安裝到 /usr/local/php5 下面,如果已經安裝 libxml2 的話可以跳過這一步。
[root@sun ~]#cd /usr/ports/textproc/libxml2 ; make install clean
也可以用 mod_php5 安裝,只不過是在 pkg_info 裡面有不同的紀錄而已
[root@sun ~]#cd /usr/ports/lang/php5 ; make config
選擇所有的 CGI only 選項,並且取消 Apache module,如果在 php4 有把 Suhosin、ipv6 安裝進去的話,php5 就不能勾選,另外如果要用 CLI 的話可以勾選。
[X] CGI        Build CGI version
[X] REDIRECT  Enable force-cgi-redirect support (CGI only)
[X] DISCARD    Enable discard-path support (CGI only)
[X] FASTCGI    Enable fastcgi support (CGI only)
[X] PATHINFO  Enable path-info-check support (CGI only)
改變安裝路徑將 PHP5 安裝到 /usr/local/php5 下面
[root@sun php5]#make PREFIX=/usr/local/php5 install clean
7.改 Apache 設定檔
[root@sun php5]#joe /usr/local/etc/apache2/httpd.conf
加入 php5 相關設定
AddHandler php5-fcgi .php5
Action php5-fcgi /php5.fcgi
讓 /usr/local/www/ 下面的資料夾可以執行 CGI,加入 Options ExecCGI
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#  Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.0/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks ExecCGI
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#  Options FileInfo AuthConfig Limit Indexes
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
8.新增 php-cgi script
放在 /usr/local/www/data-dist/php5.fcgi
#!/bin/sh
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/php5/bin/php-cgi -c /usr/local/php5/etc/php.ini
將權限改成 755
[root@sun data]#chmod 755 php5.fcgi
9.跑起來
[root@sun ~]#apachectl start
[root@sun ~]#ps aux | grep www
www      47131  0.0  1.2 53752  6296  ??  I    8:45下午  0:00.02 /usr/local/sbin/httpd -k start
www      47132  0.0  1.3 53936  6472  ??  I    8:45下午  0:00.04 /usr/local/sbin/httpd -k start
www      47133  0.0  1.3 53896  6432  ??  I    8:45下午  0:00.02 /usr/local/sbin/httpd -k start
www      47134  0.0  1.2 53776  6304  ??  I    8:45下午  0:00.01 /usr/local/sbin/httpd -k start
www      47135  0.0  1.2 53776  6304  ??  I    8:45下午  0:00.01 /usr/local/sbin/httpd -k start
www      47136  0.0  1.2 53776  6304  ??  I    8:45下午  0:00.01 /usr/local/sbin/httpd -k start
www      47139  0.0  1.2 53776  6304  ??  I    8:45下午  0:00.01 /usr/local/sbin/httpd -k start
www      47140  0.0  1.0 14112  5176  ??  Is    8:45下午  0:00.11 /usr/local/bin/php-cgi -c /usr/local/etc/php5/php.ini
www      47141  0.0  1.0 14240  5328  ??  I    8:45下午  0:00.02 /usr/local/bin/php-cgi -c /usr/local/etc/php5/php.ini
www      47142  0.0  1.0 14240  5272  ??  I    8:45下午  0:00.01 /usr/local/bin/php-cgi -c /usr/local/etc/php5/php.ini
www      47143  0.0  1.0 14240  5272  ??  I    8:45下午  0:00.01 /usr/local/bin/php-cgi -c /usr/local/etc/php5/php.ini
www      47144  0.0  1.0 14112  5192  ??  I    8:45下午  0:00.00 /usr/local/bin/php-cgi -c /usr/local/etc/php5/php.ini
www      47145  0.0  1.2 53776  6304  ??  I    8:45下午  0:00.01 /usr/local/sbin/httpd -k start
10.放 phpinfo 上去試試看
跑 php4 的副檔名就用 php,跑 php5 的副檔名就用 php5
[root@sun data]#cp info.php info.php5
實際執行狀況






11.安裝 PHP4-extension
因為 PHP4 與 PHP5 是用自訂位置的方式,所以在安裝 extension 的時候必須將 PHP 的 build environment、header files、helper programs 的位置 link 到原來 ports 的位置
[root@sun ~]#cd /usr/local/include
[root@sun include]#ln -s /usr/local/php4/include/php php
[root@sun ~]#cd /usr/local/lib
[root@sun lib]#ln -s /usr/local/php4/lib/php php
[root@sun ~]#cd /usr/local/bin/
[root@sun bin]#ln -s /usr/local/php4/bin/php-config php-config
[root@sun bin]#ln -s /usr/local/php4/bin/phpize phpize
安裝 php4-extension,選需要的 extension 安裝
[root@sun ~]#cd /usr/ports/lang/php4-extensions/
[root@sun php4-extensions]#make install clean
安裝完後將 extension.ini 移到自訂的位置下面
[root@sun ~]#cd /usr/local/php4/etc
[root@sun etc]#mkdir php
[root@sun ~]#cd /usr/local/etc/php
[root@sun php]#cp extensions.ini /usr/local/php4/etc/php/
12.安裝 PHP5-extension
安裝方法一樣只要把 link 改成 PHP5 的位置就可以了,PHP5 要多 link 一個 php-cgi
[root@sun ~]#cd /usr/local/include
[root@sun include]#ln -s /usr/local/php5/include/php php
[root@sun ~]#cd /usr/local/lib
[root@sun lib]#ln -s /usr/local/php5/lib/php php
[root@sun ~]#cd /usr/local/bin/
[root@sun bin]#ln -s /usr/local/php5/bin/php-config php-config
[root@sun bin]#ln -s /usr/local/php5/bin/phpize phpize
[root@sun bin]#ln -s /usr/local/php5/bin/php-cgi php-cgi
安裝 php5-extension,選需要的 extension 安裝
[root@sun ~]#cd /usr/ports/lang/php5-extensions/
[root@sun php5-extensions]#make install clean
安裝完後將 extension.ini 移到自訂的位置下面
[root@sun ~]#cd /usr/local/php5/etc
[root@sun etc]#mkdir php
[root@sun ~]#cd /usr/local/etc/php
[root@sun php]#cp extensions.ini /usr/local/php5/etc/php/
13.讓特定資料夾 php5 副檔名改成 php
利用 apache 設定讓特定的資料夾副檔名由 php5 改回 php,編輯 apache 設定檔加入以下敘述,使 /usr/local/www/php5 下面的 php 用 php5-fcgi 跑,其他資料夾也可如法炮製。
  AddHandler php5-fcgi .php
參考連結
http://www.deanspot.org/~alex/php5fcgi/index.html
http://www.gentoo.org/proj/en/php/php4-php5-configuration.xml
http://timdorr.com/archives/2006/02/php4_and_php4_s.php
顶端 Posted: 2007-06-23 20:52 | [楼 主]
admin
级别: 管理员


精华: 1
发帖: 4646
威望: 47 点
金钱: 23190 RMB
贡献值: 0 点
注册时间:2006-10-09
最后登录:2008-12-01

 

顶端 Posted: 2007-06-23 20:54 | 1 楼
帖子浏览记录 版块浏览记录
承德互联 » unix专区

Total 0.031300(s) query 7, Time now is:12-02 04:54, Gzip enabled
Powered by PHPWind v6.3.2 Certificate Code © 2003-08 PHPWind.com Corporation