|
警告:本文其后所描述的 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