CentOS: обновление PHP 5.3 до 5.5

Автор: | 07/10/2015
 

centos-logo-new-4Система:

# cat /etc/redhat-release
CentOS release 6.7 (Final)

Проверяем текущую версию PHP:

# php -v
PHP 5.3.3 (cli) (built: Oct 30 2014 20:12:53)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Для обновления – потребуются репозитории Remi  и Epel.

Проверяем:

# yum repolist enabled | grep -E 'epel|remi'
...
epel      Extra Packages for Enterprise Linux 6 - x86_64              11,636+128
remi      Les RPM de remi pour Enterprise Linux 6 - x86_64           1,477+1,305
remi-safe Safe Remi's RPM repository for Enterprise Linux 6 - x86_64        0+13

Устанавливаем их, если ещё не установлены:

# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm && rpm -Uvh epel-release-latest-6.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm && rpm -Uvh remi-release-6*.rpm

В файле /etc/yum.repos.d/remi.repo подключаем remi-php55:

...
[remi-php55]
...
enabled=1
...

Пробуем обновить все связанные с PHP пакеты:

# yum upgrade php*

В случае ошибки вида:

...
--> Finished Dependency Resolution
Error: Package: php-mysqlnd-5.5.30-1.el6.remi.x86_64 (remi-php55)
           Requires: php-pdo(x86-64) = 5.5.30-1.el6.remi
           Installed: php-pdo-5.3.3-40.el6_6.x86_64 (@base)
               php-pdo(x86-64) = 5.3.3-40.el6_6
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
...

На время обновления – отключите репозитории base и updates (у меня используется плагин yum-plugin-priorities, в котором приоритет установлен первым для base и updates; интеерсно, как yum себя поведёт во время автоматического обновления с помощбю yum-cron):

# yum upgrade php* --disablerepo="base, updates"
...
Dependencies Resolved

=============================================================================================================================================================================================================================================
 Package Arch Version Repository Size
=============================================================================================================================================================================================================================================
Installing:
 php-mysqlnd x86_64 5.5.30-1.el6.remi remi-php55 266 k
 replacing php-mysql.x86_64 5.3.3-40.el6_6
Updating:
 php x86_64 5.5.30-1.el6.remi remi-php55 2.7 M
 php-cli x86_64 5.5.30-1.el6.remi remi-php55 3.9 M
 php-common x86_64 5.5.30-1.el6.remi remi-php55 1.0 M
 php-pdo x86_64 5.5.30-1.el6.remi remi-php55 113 k
 php-xml x86_64 5.5.30-1.el6.remi remi-php55 210 k
Installing for dependencies:
 libzip-last x86_64 1.0.1-1.el6.remi remi 40 k
 php-pecl-jsonc x86_64 1.3.9-1.el6.remi.5.5 remi-php55 50 k
 php-pecl-zip x86_64 1.13.1-1.el6.remi.5.5 remi-php55 52 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install 4 Package(s)
Upgrade 5 Package(s)
...
Installed:
 php-mysqlnd.x86_64 0:5.5.30-1.el6.remi

Dependency Installed:
 libzip-last.x86_64 0:1.0.1-1.el6.remi php-pecl-jsonc.x86_64 0:1.3.9-1.el6.remi.5.5 php-pecl-zip.x86_64 0:1.13.1-1.el6.remi.5.5

Updated:
 php.x86_64 0:5.5.30-1.el6.remi php-cli.x86_64 0:5.5.30-1.el6.remi php-common.x86_64 0:5.5.30-1.el6.remi php-pdo.x86_64 0:5.5.30-1.el6.remi php-xml.x86_64 0:5.5.30-1.el6.remi

Replaced:
 php-mysql.x86_64 0:5.3.3-40.el6_6

Complete!

Проверяем:

# php -v
PHP 5.5.30 (cli) (built: Oct  1 2015 09:29:18)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

Перезапускаем веб-сервер, в данном случае Apache HTTP (откуда он у меня?!?):

 # service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

И снова проверяем:

# echo "<?php echo phpinfo(); ?>" > /var/www/html/index.php

 

php_info

Удаляем файл:

# rm /var/www/html/index.php

Готово.