Если на вашем веб-сервере CentOS под управлением панели Vesta требуется настроить выбор версии PHP для одного из размещенных на нем сайтов, предлагаем воспользоваться скриптом sk-php-selector[1] замечательного программиста Skamasle.
Сначала скачиваем скрипт. Для этого, посетив официальную страницу, узнаем актуальную версию. На момент написания это была версия 3. Подключаемся к серверу по ssh и вводим команду:
wget https://raw.githubusercontent.com/Skamasle/sk-php-selector/master/sk-php-selector3.sh
Затем запускаем сам скрипт, указывая какие версии php нам нужны:
bash sk-php-selector3.sh php54 php55 php56 php70 php71 php72
Или ставим все доступные:
bash sk-php-selector3.sh all
После завершения процесса установки в панели управления в выпадающем списке шаблонов Web HTTPD появится выбор sk-php54, sk-php55, sk-php56, sk-php70, sk-php71, sk-php72. При этом не нужно перезагружать сервер, что удобно.
При установке ранних версий php 54 55 56 может возникнуть ошибка, когда основная версия сервера становится именно этой старой версией. Перестает работать phpMyAdmin, и другие утилиты рассчитанные на более современное ПО. Решение в исправлении одного конфигурационного файла [2]:
nano /etc/httpd/conf.modules.d/10-php56-php.conf
Нужно закомментировать строки
#<IfModule prefork.c> # LoadModule php5_module modules/libphp56-php5.so #</IfModule>
И перезапустить сервер HTTPD:
systemctl restart httpd
Если у вас проблема с php54, то изменяете файл 10-php54-php.conf.
В процессе работы с sk-php-selector выяснилась еще одна особенность. Настройки php меняются для каждой версии отдельно! Т.е. меняя настройки php.ini, вы фактически меняете дефолтный шаблон (версию php). Если надо поменять настройки для конкретной версии php, то править файл /opt/remi/php54/root/etc/php.ini. Где php54 заменить на редактируемую версию. Как вариант, посмотрите путь к php.ini через функцию phpinfo().
При большом количестве сайтов работающих на версии php отличной предустановленной появляется ошибка переполнения памяти. Это связно с тем, что добавленные шаблоны /usr/local/vesta/data/templates/web/httpd/sk-php54.sh, sk-php55.sh и т.д. содержат параметр export PHP_FCGI_CHILDREN=10, который приводит к тому, что под каждый сайт выделяется по 10 воркеров (процессов). Эти дочерние процессы PHP висят в памяти и не могут быть завершены надлежащим образом, т.е. зависают навсегда забивая память под ноль [3]. Поэтому надо отредактировать шаблоны Web HTTPD и удалить этот параметр, или присвоить ему значение PHP_FCGI_CHILDREN=0. В завершении сделайте ребилд доменов в Весте.
v-rebuild-web-domains user
— user замените на пользователей Vesta.
[1] https://github.com/Skamasle/sk-php-selector/blob/master/sk-php-selector3.sh — официальная страница скрипта sk-php-selector.
[2] https://forum.vestacp.com/viewtopic.php?f=19&t=10854&hilit=default+php&start=240#p81031 — форум VestaCP
[3] https://forum.vestacp.com/viewtopic.php?t=14912 — форум VestaCP