·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> 在CentOS上把PHP从5.4升级到5.5

在CentOS上把PHP从5.4升级到5.5

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
在CentOS上把php从5.4升级到5.5在CentOS上把PHP从5.4升级到5.5

摘要:本文记录了在CentOS 6.3上,把PHP从5.4.8升级到5.5.13的过程。

1. 概述

在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括Git、Nginx、MySQL和PHP。这篇文章讲的是升级PHP的过程,其他软件的升级,可见下面列出的文章。

  • 在CentOS上把Git从1.7.1升级到1.7.12.4
  • 在CentOS上把Nginx从1.2.4升级到1.6.0
  • 在CentOS上把MySQL从5.5升级到5.6
  • 在CentOS上把PHP从5.4升级到5.5 (本文)

在我加入这个项目之前,服务器上的PHP已经安装设置好了,我只是正常使用而已。现在过去1年了,所有的开发工作都告一段落,有时间升级服务器上的软件了。升级这种事情是应当经常做的,倒不是为了追最新版本,而是当正式版本发放出来的时候,应该及时更新, 以便获得最新的更正、补丁,避免服务器上的漏洞,减少安全隐患。

升级是在今年6月13-14日进行的,到今天才有空做个记录,便于日后参考。

2. 计划

计划就是预案,就是事先的准备(包括心理上的)、更明细的步骤、对各种情况及对意外的对策,当然,我们不可能面面俱到,预测一切,不然就成神了,所以要随时准备脱稿演出,think out of the box。

2.1 了解情况

计划要有针对性,所以要先”踩点儿“。

通过在系统上,用find之类的命令,或者通过网页用phpinfo()函数来显示关于PHP的信息,可以找到PHP安装在/usr/local/php目录下。这说明PHP是从源代码编译安装的,因为yum和rpm是不会安装到/usr/local/php这个路径的。在QQ群友的提示下,找到PHP 5.4.8的源代码位于/usr/local/src/php-5.4.8目录中,进一步确认PHP是从源代码编译安装的。

查看PHP版本:

# /usr/local/php/bin/php -vPHP 5.4.8 (cli) (built: Nov 13 2012 00:08:08)Copyright (c) 1997-2012 The PHP GroupZend Engine v2.4.0, Copyright (c) 1998-2012 Zend Tehnologies

再查看PHP-FPM的运行情况。那两天看文档,我才知道有PHP-FPM(FastCGI PRocess Manager)这么个东西,在5.4之后已经包括在PHP之中了,详见参考资料[]13][14]。

查看PHP-FPM使用的端口:

# netstat -ntpul | grep php-fpmtcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      2881/php-fpm

查看PHP-FPM的进程:

# ps aux | grep php-fpmUSER       PID %CPU %MEM    VSZ   rss TTY      STAT START   TIME COMMANDroot      2881  0.0  0.2 204172  2064 ?        Ss    2013  38:09 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)www      18982  0.0  1.4 212796 14816 ?        S    19:12   0:03 php-fpm: pool wwwwww      18983  0.0  1.4 211996 14572 ?        S    19:13   0:03 php-fpm: pool wwwwww      18984  0.0  1.4 212276 14876 ?        S    19:13   0:03 php-fpm: pool wwwroot     19144  0.0  0.0 103236   864 pts/0    S+   23:29   0:00 grep php-fpm

查看PHP-FPM的版本:

# /usr/local/php/sbin/php-fpm -vPHP 5.4.8 (fpm-fcgi) (built: Nov 13 2012 00:15:58)Copyright (c) 1997-2012 The PHP GroupZend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

查看上次系统启动的时间,这是怕安装的东西没重启而没有生效:

# who -b         system boot  2013-01-04 01:07# last rebootreboot   system boot  2.6.32-279.14.1. Fri Jan  4 01:07 - 20:36 (526+19:29)reboot   system boot  2.6.32-220.13.1. Mon Nov 12 17:53 - 20:36 (579+02:42)reboot   system boot  2.6.32-220.13.1. Thu May 10 17:12 - 17:13  (00:01)reboot   system boot  2.6.32-220.13.1. Wed May  9 15:31 - 15:36  (00:04)reboot   system boot  2.6.32-220.13.1. Wed May  9 15:03 - 15:29  (00:26)reboot   system boot  2.6.32-220.13.1. Wed May  9 10:09 - 12:26  (02:16)reboot   system boot  2.6.32-220.13.1. Thu May  3 17:23 - 17:25  (00:02)reboot   system boot  2.6.32-220.13.1. Fri May  4 01:17 - 17:22  (-7:-54)reboot   system boot  2.6.32-220.13.1. Fri Apr 20 21:33 - 17:22 (12+19:48)reboot   system boot  2.6.32-220.13.1. Sat Apr 21 03:39 - 17:22 (12+13:42)reboot   system boot  2.6.32-220.13.1. Fri Apr 20 18:02 - 17:22 (12+23:19)reboot   system boot  2.6.32-220.13.1. Thu Apr 19 19:51 - 17:59  (22:07)

其实这种担心是多余的,因为linux和Windows不一样,基本上新安装的东西,都有命令行可以重启,只要你知道相应的命令行,不需要重启整个系统。

小结,现有的PHP 5.4.8安装在/usr/local/php目录下,是编译安装的,源代码位于/usr/local/src/php-5.4.8目录中。编译安装的好处是,可以自己定制,增减PHP扩展等等。建议,如无必要,不要使用编译安装,因为这样的安装,操作麻烦,对操作者的要求比较高,又无法利用yum和rpm这样的工具,不便于升级、卸载。

这也是为什么我用yum update php命令无法直接升级PHP的原因,因为yum或者rpm根本不知道用源代码编译安装的PHP。下面是我尝试的结果:

# yum update phpLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.163.com * epel: mirrors.hust.edu.cn * extras: mirrors.163.com * remi: mirrors.hustunique.com * remi-php55: mirrors.hustunique.com * updates: mirrors.163.comSetting up Update ProcessPackage(s) php available, but not installed.No Packages marked for Update

可见,yum没有找到已经安装的php包,所以没什么可以升级的。孤独的编译安装,没人待见,看来要在角落里终老一生了。

2.2 确定计划

经过在几个CakePHP、PHP相关的QQ群里,向其他朋友的请教和讨论,(此处略去15000字),其实这是和上面的”踩点儿“互相掺杂在一起进行的。在这里要特别感谢CakePHP群中的Christian和严谨的PHPHHVMMySQL群中的Linux 管理员(Freax)两位朋友。最终在朋友们的帮助下形成了下面的计划要点:

  • 保留原有编译安装的PHP 5.4.8,没必要去动它,不用就是了
  • 用yum安装PHP 5.5.13,配置PHP-FPM 5.5.13使用另一个端口(比如9001)
  • 修改Nginx的配置,使用在新端口上的PHP-FPM 5.5.13
  • 如何重启PHP-FPM?答:php-fpm在5.4以后默认是二进制文件了,不再用service php-fpm start这种启动了。可以在/etc/rc.local (link to /etc/rc.d/rc.local) 加上这条命令

前期的调研、计划,花了差不多2天时间,而之后的安装、配置,也就用了3-4个小时。

3. 安装、配置PHP 5.5.13

根据这两天读的文档,确定使用remi安装库,使用yum来安装PHP 5.5.13。

3.1 添加remi安装库

下面的操作依据参考资料[4]:

# wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm# rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
3.2 用yum安装PHP 5.5.13

从之前PHP 5.4.8下phpinfo()的输出,知道了旧的PHP 5.4.8上安装的PHP扩展,这样确定了下面需要安装的包(命令yum install之后的参数):

# yum install php php-fpm php-gd php-mysqlnd php-mcrypt php-mbstring php-pdoDependencies Resolved================================================================================ Package                Arch      Version                   Repository     Size================================================================================Installing: libjpeg-turbo          x86_64    1.2.1-3.el6_5             updates       174 k     replacing  libjpeg.x86_64 6b-46.el6 libjpeg-turbo-devel    x86_64    1.2.1-3.el6_5             updates        96 k     replacing  libjpeg-devel.x86_64 6b-46.el6 php                    x86_64    5.5.13-3.el6.remi         remi-php55    2.6 M php-fpm                x86_64    5.5.13-3.el6.remi         remi-php55    1.3 M php-gd                 x86_64    5.5.13-3.el6.remi         remi-php55     69 k php-mbstring           x86_64    5.5.13-3.el6.remi         remi-php55    958 k php-mcrypt             x86_64    5.5.13-3.el6.remi         remi-php55     40 k php-mysqlnd            x86_64    5.5.13-3.el6.remi         remi-php55    261 k php-pdo                x86_64    5.5.13-3.el6.remi         remi-php55    109 kInstalling for dependencies: apr-util-ldap          x86_64    1.3.9-3.el6_0.1           base           15 k fontconfig             x86_64    2.8.0-3.el6               base          186 k gd-last                x86_64    2.1.0-2.el6.remi          remi          129 k httpd                  x86_64    2.2.15-30.el6.centos      updates       821 k httpd-tools            x86_64    2.2.15-30.el6.centos      updates        73 k libX11                 x86_64    1.5.0-4.el6               base          584 k libX11-common          noarch    1.5.0-4.el6               base          192 k libXau                 x86_64    1.0.6-4.el6               base           24 k libXpm                 x86_64    3.5.10-2.el6              base           51 k libmcrypt              x86_64    2.5.8-9.el6               epel           96 k libtiff                x86_64    3.9.4-10.el6_5            updates       343 k libxcb                 x86_64    1.8.1-1.el6               base          110 k libxslt                x86_64    1.1.26-2.el6_3.1          base          452 k mailcap                noarch    2.1.31-2.el6              base           27 k php-cli                x86_64    5.5.13-3.el6.remi         remi-php55    2.5 M php-common             x86_64    5.5.13-3.el6.remi         remi-php55    1.0 M php-pear               noarch    1:1.9.4-28.el6.remi       remi          373 k php-pecl-jsonc         x86_64    1.3.5-1.el6.remi.5.5      remi-php55     46 k php-pecl-zip           x86_64    1.12.4-1.el6.remi.5.5     remi-php55    269 k php-process            x86_64    5.5.13-3.el6.remi         remi-php55     54 k php-xml                x86_64    5.5.13-3.el6.remi         remi-php55    206 k t1lib                  x86_64    5.1.2-6.el6_2.1           base          160 kTransaction Summary================================================================================Install      31 Package(s)

yum自动计算出需要的依赖安装包,总共有31个安装包需要下载、安装。

下面询问是否继续下载,回答y,并按回车即可继续:

Total download size: 13 MIs this ok [y/N]: yDownloading Packages:(1/31): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm         |  15 kB     00:00(2/31): fontconfig-2.8.0-3.el6.x86_64.rpm                | 186 kB     00:00(3/31)