[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

ArtWork/WikiDesign/icon-admonition-alert.png

警告:本文其後所描述的 5.2.6 版 php 已被取替,並且容易有安全性問題。請考慮升級至包含在 CentOS 5.6 內的 php53 或採用IUS Community Repo

概要

這份指南描述如何將 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 軟出關於 PDOJSON 的錯誤,請按這裡

額外資料

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


2023-09-11 07:23