Установка (не обновление) PHP 7.2 на CentOS 7


Для того чтоб на сервере было несколько версий PHP необходимо его не обновлять, а именно установить.

Устанавливаем репозитории федоры (epel-release) и Remi:

yum install -y epel-release
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Просмотр установленных пакетов другой версии php. Для этого посмотрим какая версия PHP стоит на сервере:

php -v

Если на сервера несколько версий PHP, то можно их посмотреть командой:

yum list installed php*

Если у нас стоит и пятая и седьмая версия PHP, но мы хотим обновить именно седьмую версию, например, с PHP 7.0 до PHP 7.2, то самым оптимальным будет установка всех аналогичных пакетов PHP 7.0 для PHP 7.2, а после настройки и проверки работоспособности PHP 7.2 удаление PHP 7.0:

yum list installed php70*
yum install -y --enablerepo=php-remi72 php72 php72-php php72-php-cli php72-php-common php72-php-devel php72-php-fpm php72-php-gd php72-php-intl php72-php-json php72-php-mbstring php72-php-mcrypt php72-php-mysqlnd php72-php-opcache php72-php-pdo php72-php-pear php72-php-pecl-geoip php72-php-pecl-solr2 php72-php-pecl-zip php72-php-process php72-php-soap php72-php-xml php72-php-xmlrpc php72-runtime

Смотрим, появилась ли служба и какое у неё состояние при автозагрузке:

systemctl list-unit-files --type service | grep php72

При необходимости включаем службу в атозагрузку (если она отключена) и проверяем её состояние:

systemctl enable php72-php-fpm
systemctl is-enabled php72-php-fpm

Запускаем службу (1) и проверяем её состояние (2):

service php72-php-fpm start
service php72-php-fpm status

Если служба не запустилась выдав ошибку, то смотрим причину ошибки набрав команду:

systemctl status php72-php-fpm

 ERROR: unable to bind listening socket for address ‘127.0.0.1:9000’: Address already in use

Так как порт занят, то мы скопируем конфигурационный файл (2) из папки /etc/opt/remi/php72/php-fpm.d/ в папку /etc/opt/remi/php7о/php-fpm.d/, предварительно сохраним версию конфигурационного файла для PHP 7.2 (1), а после копирования отключим конфиг файл для PHP 7.0 (3):

mv /etc/opt/remi/php72/php-fpm.d/www.conf /etc/opt/remi/php72/php-fpm.d/www.dis
cp /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php72/php-fpm.d/www.conf
mv /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php70/php-fpm.d/www.dis

Перезапускаем старую службу (чтоб освободить порт или сокет) и запускаем новую службу (обязательно нужно использовать restart, так как reload сокет или порт не освободит):

service php70-php-fpm restart && service php72-php-fpm start

Аналогично копируем все остальные конфигурационные файлы, но лучше по одному копировать и каждый раз перезапускать службы:

service php70-php-fpm restart && service php72-php-fpm restart

Для правки конфигурационного файла набираем:

yum install -y nano
nano /etc/opt/remi/php72/php-fpm.d/название_файла.conf

Пример:

nano /etc/opt/remi/php72/php-fpm.d/www.conf

После правки всегда нужно перезапускать службу:

service php72-php-fpm reload

или

systemctl reload php72-php-fpm

Если хотим включить репозиторий remi-php72, то в файле /etc/yum.repos.d/remi-php72.repo в строке 9 ‘enabled=0‘ заменяем на ‘enabled=1‘. Но нужно помнить, что стоящий php по умолчанию будет обновлён до версии php 7.2 в CentOS 7. Поэтому лучше не включать, а обновление php72 проводить следующим способом:

yum update -y php72* --enablerepo=remi-php72