|
警告:本文其後所描述的 5.2.6 版 php 已被取替,並且容易有安全性問題。請考慮升級至包含在 CentOS 5.6 內的 php53 或採用IUS Community Repo |
Contents
概要
這份指南描述如何將 32 位元 CentOS 5.x 上的標準 PHP 5.1.x 套件升級及現正開發中的 5.2.x 版。這些步驟是利用 32 位元的 CentOS 5.3 及安裝了下列 PHP 套件的情況下寫成的:
# rpm -qa |grep php php-common-5.1.6-15.el5.i386 php-cli-5.1.6-15.el5.i386 php-5.1.6-15.el5.i386 php-pdo-5.1.6-15.el5.i386 php-bcmath-5.1.6-15.el5.i386 php-ldap-5.1.6-15.el5.i386 php-devel-5.1.6-15.el5.i386 php-gd-5.1.6-15.el5.i386 php-xml-5.1.6-15.el5.i386 php-mbstring-5.1.6-15.el5.i386 php-mysql-5.1.6-15.el5.i386 php-dba-5.1.6-15.el5.i386
只要你的 CentOS 伺服器所採用的是標準 PHP 套件,你便不必花費額外功夫。如果你採用了 CentOS 標準軟件庫以外的 PHP 套件(例如 php-mcrypt),你須要移除它們,或者找尋更新版本。
新增開發中的軟件庫
第一件要做的事情就是將開發中的軟件庫加進 yum。當我們加入開發中的軟件庫時,我們會設定它只匯入 PHP 套件。首先,我們須要(透過你喜歡的編輯器)建立一個新的 yum 軟件庫設定檔:
# /etc/yum.repos.d/CentOS-Testing.repo
將以下內容剪貼到這檔案內:
# CentOS-Testing: # !!!! 注意 !!!! # 這個軟件庫為那些將要放入 CentOSPlus 及 CentOS Extras 的套件提供一個試驗場。 # 它們可能會更改 CentOS 的核心套件,而且並不保證能正確運作。這些套件能被編譯 # 及安裝,但正在等待測試者回饋它們的功能及穩定性。這個軟件庫內的套件在開發期 # 間會不時替換,所以在未考慮清楚前,不應被啟用或使用於實際運行系統內。 [c5-testing] name=CentOS-5 Testing baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing includepkgs=php*
請確定每行前的沒有空格,並在完成後儲存及關閉檔案。
更新 PHP 套件
在更新你的 PHP 套件之前,你應該先取得現時安裝了的套件清單。請執行以下指令來取得現有的 PHP 套件清單:
# rpm -qa |grep php
現在你可以用 yum 來更新系統上的 PHP 套件:
# yum update
你應該會看見將要被更新的套件清單。請將它與現有的 PHP 套件清單作一比較。請留意在清單上不存在的套件。你必須移除這些套件,或者為它們尋找更新版本,因為當你升級至 PHP 5.2.x 後,它們不再生效。如果你這是你可接受的,請按 y 讓 yum 繼續更新套件。
當 yum 完成後,請重新啟動 Apache:
# service httpd restart
要確認已順利更新,請在你的 www 目錄建立一個簡單的 testing.php,內裡有以下源代碼:
<?php phpinfo(); ?>
請在一個瀏覽器內打開它。新的 PHP 版本應該會在頁面上顯示出來。
結論
現在你擁有 PHP 5.2.6 在你的 32 位元 CentOS 5.3 上。
# rpm -qa |grep php php-cli-5.2.6-2.el5s2 php-mbstring-5.2.6-2.el5s2 php-devel-5.2.6-2.el5s2 php-pdo-5.2.6-2.el5s2 php-gd-5.2.6-2.el5s2 php-dba-5.2.6-2.el5s2 php-common-5.2.6-2.el5s2 php-bcmath-5.2.6-2.el5s2 php-xml-5.2.6-2.el5s2 php-pear-1.5.1-2.el5s2 php-ldap-5.2.6-2.el5s2 php-5.2.6-2.el5s2 php-mysql-5.2.6-2.el5s2 # php -v PHP 5.2.6 (cli) (built: Sep 15 2008 20:42:05) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
註:假若你的 php -v 軟出關於 PDO 或 JSON 的錯誤,請按這裡
額外資料
1. 更新/安裝 mcrypt
如果你安裝了 PHP 5.1.x 專用的 php-mcrypt,你須要移除它:
註:你的版本可能會不同。請適當地修改以下指令。
rpm -e php-mcrypt-5.1.6-15.el5.centos.1
下載 PHP 5.2.x 專用的 php-mcrypt 並安裝它。你可以在 FedoraJunkies 找到 32 位元的 php-mcrypt 套件。
註: 請留意範例中的 --nodeps 旗標。假若你安裝 php-mcrypt 時不採用此旗標,將會有錯誤信息通知你 php-common-5.2.6-2.el5s2 並不存在,縱使你已經安裝了它。
wget -c http://sourcemirrors.org/scotth/centos/5/php/php-mcrypt-5.2.6-2.i386.rpm rpm -i --nodeps php-mcrypt-5.2.6-2.i386.rpm
請重新啟動 Apache,現在你的 testing.php 頁裡應該有關 mcrypt 的資訊。
2. JSON 及 PDO 被兩度載入
當你執行 php -v 這個指令時,你可能會看見以下錯誤:
# php -v PHP Warning: Module 'json' already loaded in Unknown on line 0 PHP Warning: Module 'PDO' already loaded in Unknown on line 0 PHP 5.2.6 (cli) (built: Sep 15 2008 20:42:05) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
這是由 /etc/php.ini 檔案內的以下數行而引起的:
; Extension JSON extension=json.so ; Extension PDO extension=pdo.so
請在 extension= 前加入一個 ; 號將這些行註釋掉。這兩個模塊已經透過以下兩個檔案被載入:
/etc/php.d/json.ini /etc/php.d/pdo.ini
Translation of revision 12