Как установить PHP 5.6 на CentOS 6.x

На голом сервере проблема решается в две строчки. Сначала подключаем репозиторий webtatic, где всегда есть самые свежие версии PHP (кстати, на момент написания этой заметки там есть и PHP 7 для CentOS 6). Потом ставим ряд нужных нам пакетов (php 5.6 и его популярные расширения) из нового репозитория.

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install -y php56w-common php56w-opcache php56w-cli php56w-fpm php56w-gd \
php56w-mbstring php56w-mcrypt php56w-mysql php56w-pdo php56w-xml

Обратите внимание, что пакеты в webtatic в названии содержат версию. Так что если захотите, то можете ставить, например, не php56*, а php55*.

ОК, с проблемой установки свежего php на голый сервер мы разобрались выше. Но ситуация немного усложняется, если у вас уже стоит php 5.3 из дефолтного репозитория. И вы хотите, не удаляя php, обновить его версию до php 5.6.

Стоп! А почему бы собственно сначала не удалить старый через yum remove? А потому что при удалении дефолтного php — у вас удалятся зависимые от него пакеты, типа phpMyAdmin. Нам этого не надо, поэтому действуем так:

rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
yum install -y yum-plugin-replace
yum replace php-common --replace-with=php56w-common

В процессе установки вас могут напугать чем-то таким:
WARNING: Unable to resolve all providers: ['config(php-common)', 'curl.so', 'fileinfo.so', 'json.so', 'phar.so', 'zip.so', 'config(php-mbstring)', 'mbstring.so', 'bcmath.so', 'config(php-bcmath)', 'config(php-pdo)', 'pdo.so', 'pdo_sqlite.so', 'sqlite3.so', 'config(php-mysql)', 'mysql.so', 'mysqli.so', 'pdo_mysql.so', 'config(php-process)', 'posix.so', 'sysvmsg.so', 'sysvsem.so', 'sysvshm.so', 'config(php-xml)', 'dom.so', 'wddx.so', 'xmlreader.so', 'xmlwriter.so', 'xsl.so', 'config(php-gd)', 'gd.so', 'config(php-tidy)', 'tidy.so', 'config(php)', 'libphp5.so']
This may be normal depending on the package. Continue? [y/N]

Не бойтесь, это вас предупреждают, что могут быть проблемы с зависимыми расширениями. Но далее вы увидите, что умный yum-plugin-replace переставит сам все существующие библиотеки (удалив старые и поставив аналогичные новые). Соглашайтесь смелее! Проблем с расширениями при переезде с php 5.3 на php 5.6 не будет (за переезд на php 7.0 — не ручаюсь).

После обновления рекомендую доставить новомодный opcache (в 5.3 его не было, поэтому автоматически пакет не заменится). Делается это так:

yum install -y php56w-opcache

Также обратите внимание, что при установке новых версий php будут сохранены старые существующие конфигурационные файлы. Например, /etc/php.ini останется старый, а новый (из пакета php 5.6) будет записан в /etc/php.ini.rpmnew. Соответственно, если вам хочется, чтобы у вас был новый дефолтный конфиг, то можно сделать как-то так (забэкапив предварительно старый конфиг, при надобности):

echo /etc/php.ini.rpmnew > /etc/php.ini


Прокомментируйте: