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 |
| |