[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