Несколько версий PHP на Centos 7 с Apache

Наконец-то дошли руки написать про установку нескольких версий PHP на Centos 7 с Apache web-сервером. Остановимся на последних в двух текущих ветках 7.4 и 8.1. Как известно Centos 8 приказал долго жить Centos‘у 7 😉 Вот с ним и будем копаться. Родная версия PHP 5.4.16 уже на полпути к забвению.

Для начала установим или обновим репозитории EPEL и REMI.
yum install epel-release
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Теперь проверим, какие пакеты php у нас имеются.
yum list php8[0-9]

yum list php7[0-9]

Итак, нужные версии 7.4 и 8.1 присутствуют в установленных репозиториях. Установим их и запустим PHP-FPM (менеджер процессов PHP FastCGI), используя следующие команды.
yum install php81 php81-php-fpm php81-php-cli php81-php-mysqlnd php81-php-gd php81-php-ldap php81-php-odbc php81-php-pdo php81-php-pear php81-php-xml php81-php-xmlrpc php81-php-mbstring php81-php-snmp php81-php-soap php81-php-zip php81-php-opcache

yum install php74 php74-php-fpm php74-php-cli php74-php-mysqlnd php74-php-gd php74-php-ldap php74-php-odbc php74-php-pdo php74-php-pear php74-php-xml php74-php-xmlrpc php74-php-mbstring php74-php-snmp php74-php-soap php74-php-zip php74-php-opcache
После установки редактируем конфигурационные файлы в обеих версиях с целью изменить порт прослушки PHP-FPM.
vim /etc/opt/remi/php81/php-fpm.d/www.conf
vim /etc/opt/remi/php74/php-fpm.d/www.conf
Находим строку listen = 127.0.0.1:9000 и, недолго думая, меняем для версии PHP 8.1 на listen = 127.0.0.1:9081 и для PHP 7.4 listen = 127.0.0.1:9074 соответственно.

Далее запустим менеджер процессов PHP.
systemctl enable --now php74-php-fpm

systemctl enable --now php81-php-fpm

Проверим systemctl status php74-php-fpm

Ссылки созданы, сервисы запущены. Теперь создадим скрипты и раздадим им нужные права.
vim /var/www/cgi-bin/php81.fcgi

vim /var/www/cgi-bin/php74.fcgi

chmod 755 /var/www/cgi-bin/php*
chown apache.apache /var/www/cgi-bin/php*
ls -al /var/www/cgi-bin/

Далее в конфигурационный файл /etc/httpd/conf.d/php.conf, желательно в конце, добавим следующие строки

Проверим правильность синтаксиса наших файлов.
apachectl configtest

Перезапустим Apache web-сервер. systemctl restart httpd
Думаю, все опции достаточно прозрачны. Под каждую директорию, где находятся наши сайты, мы прописываем собственный обработчик PHP. Для проверки сделайте файлик info.php echo "<?php phpinfo(); ?>" > /var/www/html/MY_SITE_ONE/info.php и посмотрите в браузере, что получилось.

Несколько версий PHP на Centos 7 с Apache
Несколько версий PHP на Centos 7 с Apache

Кстати, если закомментировать опции в /etc/httpd/conf.d/php.conf для какого-либо сайта, то отработает родной PHP 5.4.16. Таким образом можно установить любую версию PHP для любого виртуального сайта.

Несколько версий PHP на Centos 7 с Apache

Несколько версий PHP на Centos 7 с Apache: 3 комментария

  1. Константин

    CentOS 7 NGINX+APACHE+PHP_FPM
    Долго мучился с установкой разных версий php на виртуальные хосты (((
    Перерыл много инструкций и статей — ничего не получалось (((
    По Вашей статье все кратно и понятно!!!
    Самое главное что заработало все сразу как надо!!!
    ОГРОМНОЕ СПАСИБО!!!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *