Ubuntu/Debian: Кілька версій PHP в ISPConfig

Рано чи пізно у розробника-сисадміна виникає питання одночасної інсталяції кількох версій PHP на одному сервері. На протязі років ми накопичуємо різноманітні проекти та сайти написані на різних версіях PHP. Не кожен з них вдається постійно переписувати під новий реліз, та й не завжди це доцільно («if it ain't broke, don't fix it» — «не лагодьте, що не зламане»). Для моїх читачів не секрет, що більшість власних проектів, включаючи цей блог, обслуговує веб сервер LEMP під управлінням операційної системи Ubuntu, а в якості веб-панелі я використовую безкоштовну ISPConfig. Більш детально про це читайте тут і тут. Звісно ж даний гайд підійде для Debian системи та її дистрибутивів також.

Репозиторій.
$ sudo add-apt-repository ppa:ondrej/php
$ apt-get update

Інсталяція PHP-FPM та базових розширень.

PHP 5.6
apt-get install php5.6 php5.6-cli php5.6-cgi php5.6-fpm php5.6-gd php5.6-mysql php5.6-imap php5.6-curl php5.6-intl php5.6-pspell php5.6-recode php5.6-sqlite3 php5.6-tidy php5.6-xmlrpc php5.6-xsl php5.6-zip php5.6-mbstring php5.6-soap php5.6-opcache libicu65 php5.6-common php5.6-json php5.6-readline php5.6-xml
PHP 7.0
apt-get install php7.0 php7.0-cli php7.0-cgi php7.0-fpm php7.0-gd php7.0-mysql php7.0-imap php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-zip php7.0-mbstring php7.0-soap php7.0-opcache php7.0-common php7.0-json php7.0-readline php7.0-xml
PHP 7.1
apt-get install php7.1 php7.1-cli php7.1-cgi php7.1-fpm php7.1-gd php7.1-mysql php7.1-imap php7.1-curl php7.1-intl php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-xsl php7.1-zip php7.1-mbstring php7.1-soap php7.1-opcache php7.1-common php7.1-json php7.1-readline php7.1-xml
PHP 7.2
apt-get install php7.2 php7.2-cli php7.2-cgi php7.2-fpm php7.2-gd php7.2-mysql php7.2-imap php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap php7.2-opcache php7.2-common php7.2-json php7.2-readline php7.2-xml
PHP 7.3
apt-get install php7.3 php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-imap php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl php7.3-zip php7.3-mbstring php7.3-soap php7.3-opcache php7.3-common php7.3-json php7.3-readline php7.3-xml
PHP 7.4
apt-get install php7.4 php7.4-cli php7.4-cgi php7.4-fpm php7.4-gd php7.4-mysql php7.4-imap php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl php7.4-zip php7.4-mbstring php7.4-soap php7.4-opcache libonig5 php7.4-common php7.4-json php7.4-readline php7.4-xml
PHP 8.0
apt-get install php8.0 php8.0-cli php8.0-cgi php8.0-fpm php8.0-gd php8.0-mysql php8.0-imap php8.0-curl php8.0-intl php8.0-pspell php8.0-sqlite3 php8.0-tidy php8.0-xsl php8.0-zip php8.0-mbstring php8.0-soap php8.0-opcache libonig5 php8.0-common php8.0-readline php8.0-xml
PHP 8.1
apt-get install php8.1 php8.1-cli php8.1-cgi php8.1-fpm php8.1-gd php8.1-mysql php8.1-imap php8.1-curl php8.1-intl php8.1-pspell php8.1-sqlite3 php8.1-tidy php8.1-xsl php8.1-zip php8.1-mbstring php8.1-soap php8.1-opcache libonig5 php8.1-common php8.1-readline php8.1-xml

ISPConfig. Заходимо в панель на правах адміністратора. Далі слідуємо в меню: System => Additional PHP Versions. Форма включає три закладки. Перша закладка «Name» чисто формальна, задаємо назву PHP версії. Нічого не варто вигадувати, вказуємо відповідно релізу — PHP 8.1, PHP 7.0 ... PHP 5.6 тощо.

ISPConfig additional php versions

FastCGI Settings. Необхідно зазначити два шляхи: «Path to the PHP FastCGI binary» і «Path to the php.ini directory». Вказуємо відповідно до встановленої версії PHP:

ISPConfig fastcgs settings
PHP 5.6
Path to the PHP FastCGI binary
php-cgi5.6
Path to the php.ini directory
/etc/php/5.6/cgi/
PHP 7.0
Path to the PHP FastCGI binary
php-cgi7.0
Path to the php.ini directory
/etc/php/7.0/cgi/
PHP 7.1
Path to the PHP FastCGI binary
php-cgi7.1
Path to the php.ini directory
/etc/php/7.1/cgi/
PHP 7.2
Path to the PHP FastCGI binary
php-cgi7.2
Path to the php.ini directory
/etc/php/7.2/cgi/
PHP 7.3
Path to the PHP FastCGI binary
php-cgi7.3
Path to the php.ini directory
/etc/php/7.3/cgi/
PHP 7.4
Path to the PHP FastCGI binary
php-cgi7.4
Path to the php.ini directory
/etc/php/7.4/cgi/
PHP 8.0
Path to the PHP FastCGI binary
php-cgi8.0
Path to the php.ini directory
/etc/php/8.0/cgi/
PHP 8.1
Path to the PHP FastCGI binary
php-cgi8.1
Path to the php.ini directory
/etc/php/8.1/cgi/

PHP-FPM Settings. Аналогічно заповнюємо форму згідно встановленої версії:

ISPConfig php-fpm settings
PHP 5.6
Path to the PHP-FPM init script
php5.6-fpm
Path to the php.ini directory
etc/php/5.6/fpm/
Path to the PHP-FPM pool directory
/etc/php/5.6/fpm/pool.d
PHP 7.0
Path to the PHP-FPM init script
php7.0-fpm
Path to the php.ini directory
/etc/php/7.0/fpm/
Path to the PHP-FPM pool directory
/etc/php/7.0/fpm/pool.d
PHP 7.1
Path to the PHP-FPM init script
php7.1-fpm
Path to the php.ini directory
etc/php/7.1/fpm/
Path to the PHP-FPM pool directory
/etc/php/7.1/fpm/pool.d
PHP 7.2
Path to the PHP-FPM init script
php7.2-fpm
Path to the php.ini directory
/etc/php/7.2/fpm/
Path to the PHP-FPM pool directory
/etc/php/7.2/fpm/pool.d
PHP 7.3
Path to the PHP-FPM init script
php7.3-fpm
Path to the php.ini directory
/etc/php/7.3/fpm/
Path to the PHP-FPM pool directory
/etc/php/7.3/fpm/pool.d
PHP 7.4
Path to the PHP-FPM init script
php7.4-fpm
Path to the php.ini directory
/etc/php/7.4/fpm/
Path to the PHP-FPM pool directory
/etc/php/7.4/fpm/pool.d
PHP 8.0
Path to the PHP-FPM init script
php8.0-fpm
Path to the php.ini directory
/etc/php/8.0/fpm/
Path to the PHP-FPM pool directory
/etc/php/8.0/fpm/pool.d
PHP 8.1
Path to the PHP-FPM init script
php8.1-fpm
Path to the php.ini directory
/etc/php/8.1/fpm/
Path to the PHP-FPM pool directory
/etc/php/8.1/fpm/pool.d

Усі налаштування майже зроблено. Залишилось обрати версію PHP за замовчуванням. Якщо цього не зробити, новіша версія займе місце по дефолту. А це може порушити роботу вже існуючих скриптів (phpMyAdmin, ISPConfig, web-пошта і таке інше). Виконуємо команду update-alternatives --config php та перезавантажуємо сервіс. Команди управління демоном відповідно до версій PHP наступні:

PHP 5.6
Start
service php5.6-fpm start
Stop
service php5.6-fpm stop
Restart
service php5.6-fpm restart
PHP 7.0
Start
service php7.0-fpm start
Stop
service php7.0-fpm stop
Restart
service php7.0-fpm restart
PHP 7.1
Start
service php7.1-fpm start
Stop
service php7.1-fpm stop
Restart
service php7.1-fpm restart
PHP 7.2
Start
service php7.2-fpm start
Stop
service php7.2-fpm stop
Restart
service php7.2-fpm restart
PHP 7.3
Start
service php7.3-fpm start
Stop
service php7.3-fpm stop
Restart
service php7.3-fpm restart
PHP 7.4
Start
service php7.4-fpm start
Stop
service php7.4-fpm stop
Restart
service php7.4-fpm restart
PHP 8.0
Start
service php8.0-fpm start
Stop
service php8.0-fpm stop
Restart
service php8.0-fpm restart
PHP 8.1
Start
service php8.1-fpm start
Stop
service php8.1-fpm stop
Restart
service php8.1-fpm restart

P.S. Таким чином можна інсталювати необмежену кількість альтернативних версій PHP, усі зазначені дії не вимагають перезавантаження сервера.

Доступні VPS/VDS Доступні VPS/VDS
2022-07-13   469