Две версии PHP на CentOS6 с панелью управления ISPManager v4
Раздел(ы): GNU Linux - CentOS / Debian, Программное обеспечение
Просмотры: 2516
Комментарии: 0
В предыдущей статье я написал как обновить версию PHP5 на PHP7 на сервере с операционной системой CentOS 6. В ней я так же упомянул о возможных проблемах в виде неработающих сайтов из-за несовместимости с новой версией PHP.
У меня на сервере более 20 сайтов и 3 из них напрочь отказались работать на новой версии PHP. К сожалению, владельцы этих сайтов не смогли оперативно исправить код для совместимости с PHP7 и мне пришлось самому искать решение, чтобы на сервере одновременно могли работать несколько разных версий PHP.
Задачу усложняло то, что на сервере стоит старенькая панель управления ISPmanager версии 4, в которой возможность работы с несколькими версиями PHP не предусмотрена.
Было решено, что PHP7 будет основной версией и будет работать как модуль Apache. Версия PHP5 будет подключаться в режиме PHP-CGI для тех сайтов чей код несовместим с PHP7. Все настройки для сайтов в части выбора версии PHP можно будет производить прямо из панели, без правки конфигурационных файлов Apache, PHP и .htaccess.
Режимом PHP-CGI для PHP7 я решил пожертвовать.
Исходные данные
Все приведенные ниже инструкции были опробованы на сервере с операционной системой CentOS 6.10 разрядностью 64 бита с установленной панелью управления хостингом ISPmanager-Lite версии 4.4.10.30. PHP на сервере обновлен до версии 7.3 по этой инструкции.
Как установить вторую версию PHP на CentOS6
Первым делом необходимо подключить репозиторий Remi, если он у вас еще не установлен:
# yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
Если все прошло без ошибок, то после установки репозитория, у вас появится несколько файлов remi****.repo в каталоге: /etc/yum.repos.d/.
И если там присутствует remi-safe.repo, то вам остается только проверить доступность необходимой нам версии PHP:
# yum list php56*
Устанавливаем вторую версию PHP на сервер:
# yum install php56-php php56-php-cli php56-php-common php56-php-gd php56-php-ioncube-loader php56-php-mbstring php56-php-mcrypt php56-php-mysqlnd php56-php-opcache php56-php-pear
Перезагрузим Apache:
# service httpd restart
Теперь на сервере будет две версии PHP, стандартная 7.3 и дополнительная 5.6, имена файлов у последней будут начинаться с PHP56.
Как использовать несколько версий PHP на хостинге
Я писал выше, что решил пожертвовать режимом PHP-CGI версии 7.3 в пользу 5.6. Чтобы это осуществить выполните в консоли следующие команды:
# mv /usr/bin/php-cgi /usr/bin/php-cgi_old # cp -P /usr/bin/php56-cgi /usr/bin/php-cgi
Этими командами мы заменили вызов PHP-CGI версии 7.3 на PHP-CGI версии 5.6. При этом мы сохранили версию PHP-CGI 7.3 для возможности отмены изменений.
Теперь, когда в ISPmanager вы выбираете для сайта режим работы PHP-CGI будет работать версия PHP 5.6.
Настраивает ISPmanager 4 для работы с двумя версиями PHP
Эти настройки необязательны, но делают процесс выбора версий PHP в ISPmanager более наглядным.
Открываем файл /usr/local/ispmgr/var/.xmlcache/ispmgr/wwwdomain.edit.ru.xml
и ищем в нем:
<msg name="php">PHP</msg><msg name="phpcgi">PHP как CGI</msg><msg name="phpfcgi">PHP как FastCGI</msg><msg name="phpmod">PHP как модуль Apache</msg>
меняем на подобное:
<msg name="php">Версия PHP</msg><msg name="phpcgi">PHP 5.6 как CGI</msg><msg name="phpfcgi">PHP как FastCGI</msg><msg name="phpmod">PHP 7.3 как модуль Apache</msg>
Теперь нужно перегрузить панель ISPmanager:
# killall -9 ispmgr
После чего при настройке параметров домена вы должны увидеть примерно следующее:
Результаты
В результате вышеописанных действий у нас на сервере появилась возможность использовать для сайтов две версии PHP. Одна основная 7.3 работает как модуль Apache, вторая 5.6 в режиме PHP-CGI. Выбор версий PHP для каждого домена осуществляется в панели управления ISPmanager.
Благодарности
При написании статьи были использованы следующие источники: