设为首页 收藏本站
查看: 586|回复: 0

[经验分享] Upgrade PHP 5.1/5.2 to 5.3 on CentOS

[复制链接]

尚未签到

发表于 2018-12-23 07:28:50 | 显示全部楼层 |阅读模式
  I’m finding that more and more software developers are being quite inconsiderate and are making code that requires PHP 5.3. Since many server-based and long-term support distros are still on PHP 5.2, this can make things difficult quickly.
  I’ll share how I upgraded one of my servers, but I do need to let you know about some specifics about my setup as your setup may be different and require different steps to upgrade.
  When I started, my system ran CentOS 5.5 and PHP 5.2.16. Now it is running CentOS 5.6 and PHP 5.3.3.
  You won’t be able to follow these steps without root access, so that is definitely a requirement. I’m also running Apache. You may be using a different web server, but if you don’t know what I’m talking about, you are running Apache. I assume that if you run a different server, you will know what to change in my steps.

Upgrade CentOS 5.5 to CentOS 5.6

  I found that CentOS 5.6,>  Fortunately, upgrading CentOS is very easy. I simply ran the following command to spawn a huge amount of work for the server:
  

[user@server ~]$ sudo yum update  
[sudo] password for user:
  
Loaded plugins: fastestmirror, priorities
  
Loading mirror speeds from cached hostfile
  
* addons: mirrors.tummy.com
  
* base: centos.mirror.lstn.net
  
* epel: fedora-epel.mirror.lstn.net
  
* extras: mirror.ubiquityservers.com
  
* updates: mirror.steadfast.net
  
Setting up Update Process
  
Resolving Dependencies
  
--> Running transaction check
  
---> Package amtu.x86_64 0:1.0.6-2.el5 set to be updated
  
---> Package asciidoc.noarch 0:8.6.5-1.el5.rf set to be updated
  
---> Package audit.x86_64 0:1.7.18-2.el5 set to be updated
  

  
...
  

  
Install       5 Package(s)
  
Upgrade     208 Package(s)
  
Remove        2 Package(s)
  
Reinstall     0 Package(s)
  
Downgrade     0 Package(s)
  


  
Total download>  
Is this ok [y/N]: y
  
Downloading Packages:
  
(1/213): avahi-glib-0.6.16-10.el5_6.x86_64.rpm                                                                                                                                                                        |  15 kB     00:00
  
(2/213): avahi-glib-0.6.16-10.el5_6.i386.rpm                                                                                                                                                                          |  15 kB     00:00
  
(3/213): rng-utils-2.0-4.el5.x86_64.rpm                                                                                                                                                                               |  17 kB     00:00
  

  
...
  

  
Complete!
  
[user@server ~]$
  

  Notice the white “y” toward the bottom. Before it does anything, you must answer its question with a “y”. Just hitting enter will cancel the upgrade.
  This will take between 5-30 minutes on average depending on the number of packages to be upgraded, the speed of your system, and your servers connection speed. So pop open a root beer and wait for everything to finish up.

Reboot the server
  Since this should have installed a new kernel for your system, you will want to reboot so that this new kernel can be loaded.
  Rebooting a server can be a scary thing. Make sure that you know how to contact your hosting company’s tech support in case there are any problems with connecting to the server after the reboot. Also make sure that you notify any people that may be upset about the reboot before you do it.

Upgrade PHP 5.2 to PHP 5.3
  I booted up my system and found that my PHP version was not upgraded:
  

[user@server ~]$ php -v  
PHP 5.2.11 (cli) (built: Jan 17 2011 01:47:19)
  
Copyright (c) 1997-2009 The PHP Group
  
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
  

  This version of CentOS took the odd step of having both PHP 5.2 and PHP 5.3 packages. The main packages are 5.2 while another set with modified names are 5.3. For instance, the PHP 5.2 main package is php while the PHP 5.3 one is php53.

  I still have no>  Since I couldn’t just install the php53 packages as they would conflict with the php packages, I had to remove all the existing PHP packages and install the new ones. This meant that I had to take stock of exactly what packages I had to remove and replace.
  I used the yum commands list command to quickly get this information:
  

[user@server ~]$ yum list installed | grep php | cut -d' ' -f1  
php.x86_64
  
php-cli.x86_64
  
php-common.x86_64
  
php-devel.x86_64
  
php-gd.x86_64
  
php-mbstring.x86_64
  
php-mysql.x86_64
  
php-mcrypt.x86_64
  
php-pdo.x86_64
  
php-pear.noarch
  
php-pgsql.x86_64
  
php-xml.x86_64
  
php-xmlrpc.x86_64
  
[user@server ~]$
  

  The | cut -d' ' -f1 part at the end is just some fanciness to show only the package name and not the extra cruft.
  Next I checked to make sure that those packages were available for php53:
  

[user@server ~]$ yum search php53 | cut -d' ' -f1 | grep php  
php53.x86_64
  
php53-bcmath.x86_64
  
php53-cli.x86_64
  
php53-common.x86_64
  
php53-dba.x86_64
  
php53-devel.x86_64
  
php53-gd.x86_64
  
php53-imap.x86_64
  
php53-intl.x86_64
  
php53-ldap.x86_64
  
php53-mbstring.x86_64
  
php53-mysql.x86_64
  
php53-odbc.x86_64
  
php53-pdo.x86_64
  
php53-pgsql.x86_64
  
php53-process.x86_64
  
php53-pspell.x86_64
  
php53-snmp.x86_64
  
php53-soap.x86_64
  
php53-xml.x86_64
  
php53-xmlrpc.x86_64
  
[use@server ~]$
  

  I quickly noticed that neither php53-mcrypt.x86_64 nor php53-pear.noarch were available. I would have to install these manually.
  First, I shut down the Apache server as I didn’t want people going to broken pages as I did these updates:
  

[user@server ~]$ sudo service httpd stop  
Stopping httpd:                                            [  OK  ]
  
[user@server ~]$
  

  Next, I remove the old PHP packages:
  

[user@server ~]$ sudo yum remove php php-cli php-common php-devel php-gd php-mbstring \  
php-mysql php-mcrypt php-pdo php-pear php-pgsql php-xml php-xmlrpc
  
Loaded plugins: fastestmirror, priorities
  
Setting up Remove Process
  
Resolving Dependencies
  
--> Running transaction check
  
---> Package php.x86_64 0:5.2.16-jason.1 set to be erased
  

  
...
  

  
Remove        13 Package(s)
  
Reinstall     0 Package(s)
  
Downgrade     0 Package(s)
  

  
Is this ok [y/N]: y
  
Downloading Packages:
  
Running rpm_check_debug
  
Running Transaction Test
  

  
...
  

  
Complete!
  
[user@server ~]$
  

  Finally, I installed the available replacement packages:
  

[user@server ~]$ sudo yum install php53 php53-cli php53-common php53-devel php53-gd \  
php53-mbstring php53-mysql php53-pdo php53-pgsql php53-xml php53-xmlrpc
  
Loaded plugins: fastestmirror, priorities
  
Loading mirror speeds from cached hostfile
  
* base: centos.mirror.lstn.net
  
* epel: fedora-epel.mirror.lstn.net
  
* extras: mirror.ubiquityservers.com
  
* updates: mirror.steadfast.net
  
Setting up Install Process
  

  
...
  

  
Install       2 Package(s)
  
Upgrade       0 Package(s)
  


  
Total download>  
Is this ok [y/N]: y
  
Downloading Packages:
  

  
...
  

  
Complete!
  
[user@server ~]$
  

  Now it’s time to get the other PHP elements that were not available as packages.

Install PHP mcrypt
  The php53-mcrypt package wasn’t available, so we have to install it manually. The following steps will accomplish this.
  We first need to install the development package for mcrypt:
  

[user@server ~]$ sudo yum install php53-devel libmcrypt-devel  
...
  

  PHP’s mcrypt extension can be compiled and installed from the source code, so we need to download and unpackage the PHP 5.3.3 source. You can find a download link on the PHP>wget to make the process a bit quicker:
  

[user@server ~]$ wget http://museum.php.net/php5/php-5.3.3.tar.gz  
--2011-12-07 14:32:00--  http://museum.php.net/php5/php-5.3.3.tar.gz
  
Resolving museum.php.net... 67.23.255.166
  
Connecting to museum.php.net|67.23.255.166|:80... connected.
  
HTTP request sent, awaiting response... 200 OK
  
Length: 13921529 (13M) [application/x-gzip]
  
Saving to: 'php-5.3.3.tar.gz'
  

  
100%[=============================================================>] 13,921,529  2.04M/s   in 6.6s
  

  
2011-06-24 19:10:40 (2.00 MB/s) - `php-5.3.3.tar.gz' saved [13921529/13921529]
  

  
[user@server ~]$ tar xf php-5.3.3.tar.gz
  
[user@server ~]$
  

  Now we need to compile and install the mcrypt extension:
  

[user@server ~]$ cd php-5.3.3/ext/mcrypt/  
[user@server mcrypt]$ phpize
  
Configuring for:
  
PHP Api Version:         20090626
  
Zend Module Api No:      20090626
  
Zend Extension Api No:   220090626
  
[user@server mcrypt]$ aclocal
  
[user@server mcrypt]$ ./configure
  
checking for egrep... grep -E
  
checking for a sed that does not truncate output... /bin/sed
  
checking for cc... cc
  

  
...
  

  
checking how to hardcode library paths into programs... immediate
  
configure: creating ./config.status
  
config.status: creating config.h
  
[user@server mcrypt]$ make
  
....
  

  
Build complete.
  
Don't forget to run 'make test'.
  

  
[user@server mcrypt]$ make test
  

  
Build complete.
  
Don't forget to run 'make test'.
  

  
=====================================================================
  
PHP         : /usr/bin/php
  
PHP_SAPI    : cli
  
PHP_VERSION : 5.3.3
  
ZEND_VERSION: 2.3.0
  

  
...
  

  
Do you want to send this report now? [Yns]: y
  

  
Please enter your email address.
  
(Your address will be mangled so that it will not go out on any
  
mailinglist in plain text): user@example.com
  

  
Posting to qa.php.net /buildtest-process.php
  

  
Thank you for helping to make PHP better.
  
[user@server mcrypt]$ sudo make install
  
Installing shared extensions:     /usr/lib64/php/modules/
  
[user@server mcrypt]$
  

  Now all we have to do is set up the mcrypt.ini file so that the mcrypt extension loads with PHP. This file needs to reside at /etc/php.d/mcrypt.ini.
  

[user@server mcrypt]$ echo -e "; Enable mcrypt extension module\nextension=mcrypt.so" | \  
sudo tee /etc/php.d/mcrypt.ini
  
; Enable mcrypt extension module
  
extension=mcrypt.so
  
[user@server mcrypt]$
  

Install PHP Pear
  Finally, I need to install PHP Pear. If you haven’t used it, it is essentially a code repository tool for easily installing, upgrading, and managing hosted code. It is basically PHP’s version of Perl’s CPAN.
  Installing this is fairly straightforward.
  

[user@server ~]$ wget http://pear.php.net/go-pear.phar  
--2011-06-24 15:18:22--  http://pear.php.net/go-pear.phar
  
Resolving pear.php.net... 78.129.214.25
  
Connecting to pear.php.net|78.129.214.25|:80... connected.
  
HTTP request sent, awaiting response... 200 OK
  
Length: 3680148 (3.5M) [application/octet-stream]
  
Saving to: `go-pear.phar'
  

  
100%[===============================================================>] 3,680,148    523K/s   in 7.3s
  

  
2011-06-24 15:18:29 (491 KB/s) - `go-pear.phar' saved [3680148/3680148]
  

  
FINISHED --2011-06-24 15:18:29--
  
Downloaded: 1 files, 3.5M in 7.3s (491 KB/s)
  
[user@server ~]$ sudo php go-pear.phar
  

  
Below is a suggested file layout for your new PEAR installation.  To
  
change individual locations, type the number in front of the
  
directory.  Type 'all' to change all of them or simply press Enter to
  
accept these locations.
  

  
...
  

  
Beginning install...

  
PHP Warning:  date(): It is not safe to>
  
PHP Warning:  date(): It is not safe to>
  
PHP Warning:  date(): It is not safe to>
  
PHP Warning:  date(): It is not safe to>  
Configuration written to /etc/pear.conf...
  
Initialized registry...
  

  
...
  

  
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
  
PEAR: To install optional features use "pear install pear/PEAR#featurename"
  

  
The 'pear' command is now at your service at /usr/bin/pear
  
[user@server ~]$
  

  Notice that ugly mess about the date() function. It’s PHP 5.3-specific. I posted how to fix it here.

Final Thoughts
  All in all, this was much more complex than I had anticipated. I can understand why the CentOS devs had decided to make a separate set of packages for PHP 5.3, but it really has made things difficult. I do have to warn you that many other packages will start to take issue with this setup as they will have dependency requirements for the php package which naturally conflicts with the php53. This leads me to think that they have done this in a way that the repo was not supposed to support as the dependencies should not break in this fashion.
  Oh well. Nothing is perfect.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-654594-1-1.html 上篇帖子: PHP服务器推技术 下篇帖子: php生成 utf-8 编码文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表