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

CentOS 7 – один из самых популярных дистрибутивов Linux для хостинга веб-приложений и сайтов. В сочетании с сервером Apache, это надежное и мощное решение для хостинга веб-проектов.

Однако, в современном мире разработки веб-приложений, использование различных версий PHP может быть критически важным для обеспечения совместимости и безопасности проекта. В этой статье мы рассмотрим, как установить несколько версий PHP на CentOS 7 с Apache.

Перед установкой дополнительных версий PHP на CentOS 7, вам потребуется рабочая система с предустановленным Apache и PHP. Если у вас еще нет веб-сервера Apache и PHP, следуйте инструкциям по установке и настройке на официальном сайте проекта CentOS.

Установка нужной версии PHP

Установка Remi Repository:

Для того, чтобы получить доступ к дополнительным версиям PHP, вам понадобится подключить репозиторий Remi. Он содержит множество пакетов, включая различные версии PHP. Выполните следующие команды в командной строке, чтобы добавить репозиторий Remi на вашей CentOS 7 системе:

 

sudo yum install epel-release

 

Установка нужной версии PHP

После того как репозиторий Remi добавлен, можно установить нужные версии.

Я буду ставить два релиза php74 и php82.

Посмотрим какие пакеты доступны для установки.

# yum list php8[0-9]

 

Доступные релизы 8 версии

 

# yum list php7[0-9]

 

Доступные релизы 7 версии

 

Как видно на скриншоте выше, нужные релизы 8.2 и 7.4 присутствуют выше. Приступим к установке.

yum install php82 php82-php-fpm php82-php-cli php82-php-mysqlnd php82-php-gd php82-php-ldap php82-php-odbc php82-php-pdo php82-php-pear php82-php-xml php82-php-xmlrpc php82-php-mbstring php82-php-snmp php82-php-soap php82-php-zip php82-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 FastCGI или PHP-FPM.

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

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

Изменяем строчку «listen = 127.0.0.1:9000» таким образом, чтобы для удобства порт заканчивался на релиз php. В нашем случае это «listen = 127.0.0.1:9082» для php82 и «listen = 127.0.0.1:9074» для php74.

Запустим PHP-FPM.

systemctl enable --now php82-php-fpm

systemctl enable --now php74-php-fpm

 

Создадим два bash скрипта в каталоге /var/www/cgi-bin.

touch /var/www/cgi-bin/php82.fcgi

 

nano /var/www/cgi-bin/php82.fcgi

#!/bin/bash

exec /bin/php82-cgi

 

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

#!/bin/bash

exec /bin/php74-cgi

Далее поменяем права на 755 и назначим владельца и группу apache.

chmod 755 /var/www/cgi-bin/php*

chown apache:apache /var/www/cgi-bin/php*

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

В apache создадим конфигурационный файл «php.conf», который будет определять какую версию php использовать для конкретного сайта.

touch /etc/httpd/conf.d/php.conf

##################

Action php82-fcgi /cgi-bin/php82.fcgi

Action php74-fcgi /cgi-bin/php74.fcgi

##################

<Directory /var/www/html/site1.ru>

AllowOverride all

Require all granted

# mod_proxy_fcgi options

<IfModule mod_proxy_fcgi.c>

<FilesMatch .php$>

SetHandler "proxy:fcgi://127.0.0.1:9082"

</FilesMatch>

</IfModule>

</Directory>

#

##################

#

<Directory /var/www/html/site2.ru>

AllowOverride all

Require all granted

# mod_proxy_fcgi options

<IfModule mod_proxy_fcgi.c>

<FilesMatch .php$>

SetHandler "proxy:fcgi://127.0.0.1:9074"

</FilesMatch>

</IfModule>

</Directory>

##################

 

Перезапуск Apache

После изменения альтернатив PHP, не забудьте перезапустить веб-сервер Apache.

systemctl restart httpd

 

Чтобы проверить какой релиз использует сайт, необходимо поместить файл в директорию сайта, в моем случае это «/var/www/html/site1.ru/my.php» с содержимым:

"<?php phpinfo(); ?>"

Затем в браузере просто открываем файл:

site1.ru/my.php

Итог

Теперь вы знаете, как установить несколько версий PHP на CentOS с помощью Apache. Это даст вам гибкость и возможность адаптировать ваш проект под различные требования и решать возникающие проблемы совместимости.

Помните, что правильное управление версиями PHP также включает в себя регулярные обновления и обеспечение безопасности вашей системы.

Перед установкой новых версий PHP, убедитесь, что они совместимы с вашими приложениями и не вызовут конфликтов с уже установленными пакетами. Следуйте официальным руководствам и документации для обновления версий PHP и управления зависимостями пакетов на вашей системе CentOS 7.

В дополнение к установке нескольких версий PHP через репозиторий Remi, существуют также другие методы управления версиями PHP.

PHP-FPM

PHP-FPM (FastCGI Process Manager) — альтернативный способ обработки PHP-скриптов вместо встроенного веб-сервера Apache модуля mod_php. PHP-FPM позволяет управлять пулами процессов PHP, и это делает его более эффективным для обработки запросов в многопользовательской среде.