Как установить несколько версий PHP на Ubuntu 22.04, 20.04 и 18.04

В данном руководстве рассматривается процесс установки нескольких версий PHP на Ubuntu и настройка конкретного виртуального хоста Apache или блока сервера Nginx для использования одной из них. Это особенно актуально, если на вашем сервере размещено несколько веб-приложений, из которых одно или два не поддерживают версию PHP, доступную в стандартном репозитории Ubuntu. Например, репозиторий Ubuntu 20.04 содержит PHP 7.4, а в Ubuntu 22.04 — PHP 8.1. Мы изучим, как установить PHP 7.4, PHP 8.0 и PHP 8.1 на одном сервере Ubuntu.

Установка нескольких версий PHP на Ubuntu с использованием PPA.

Чтобы установить несколько версий PHP, наиболее удобным методом является использование PPA, разработанного Ondřej Surý, который является разработчиком Debian. Для добавления этого PPA выполните следующие команды в терминале. Пакет software-properties-common нужен для установки программного обеспечения из PPA. Он автоматически устанавливается на настольной версии Ubuntu, но может не быть доступным на вашем сервере Ubuntu.

sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update

Теперь вы можете установить PHP8.0 на Ubuntu, используя следующую команду.

sudo apt install php8.0 php8.0-fpm

И установить несколько популярных расширений для PHP 8.0.

sudo apt install php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl

Чтобы увидеть все доступные расширения для PHP8.0, введите команду sudo apt install php8.0 и дважды нажмите клавишу Tab.

ubuntu-install-multiple-php-versions

Для установки PHP 7.4 на Ubuntu выполните следующие шаги:

Читайте также:  Руководство по восстановлению файловой системы с помощью команды fsck

sudo apt install php7.4 php7.4-fpm

Установите несколько популярных расширений для PHP 7.4.

sudo apt install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

PHP8.1 можно установить аналогичным образом. Достаточно изменить номер версии в указанных командах.

PHP5.6, PHP7.0 и PHP7.2 завершили свой жизненный цикл, однако вы все равно можете получать обновления безопасности через этот PPA.

Изменение версии PHP на виртуальном хостинге Apache

Apache по умолчанию применяет одну версию PHP для всех виртуальных хостов. Чтобы использовать другую версию PHP для определенного виртуального хоста, необходимо отключить модуль PHP в Apache и настроить выполнение PHP-кода через PHP-fpm.Убедитесь, что модуль mod_php установлен.

dpkg - l | grep libapache2-mod-php

Если он активирован, необходимо его деактивировать. Например, на моем сервере с Ubuntu 20.04 установлен модуль libapache2-mod-php7.4.

multiple-php-versions-apache-ubuntu-server-20.04

Я выключаю его, осуществляя:

sudo a2dismod php7.4

Необходимо также деактивировать модуль MPM prefork.

sudo a2dismod mpm_prefork

Теперь необходимо выполнить следующую команду для активации трех модулей, которые будут использовать PHP-FPM, независимо от наличия mod_php на вашем сервере.

sudo a2enmod mpm_event proxy_fcgi setenvif

Конфигурационный файл PHP-FPM располагается по пути /etc/apache2/conf-available/.

run-multiple-php-versions-ubuntu-server-20.04

Если вы планируете использовать PHP8.0 на виртуальном хосте Apache, откройте файл конфигурации вашего виртуального хоста и вставьте следующую строку внутри тегов.

Include /etc/apache2/conf-available/php8.0-fpm.conf

Изменение версии PHP в Ubuntu 20.04 с Apache

Сохраните изменения в файле и закройте его. После этого выполните проверку синтаксиса.

sudo apachectl - t

Перезапустите сервер Apache, чтобы новые настройки начали действовать.

sudo systemctl restart apache2

Предположим, вам нужно настроить виртуальный хост Mautic с использованием PHP7.4, так как Mautic не поддерживает PHP8.0. Вставьте следующую строку в конфигурацию вашего виртуального хоста Mautic между соответствующими тегами, а затем перезапустите Apache.

Читайте также:  Как сбросить рабочий стол Gnome на Ubuntu 18.04 Bionic

Include /etc/apache2/conf-available/php7.4-fpm.conf

Для того чтобы узнать, какую версию PHP использует ваш виртуальный хост, создайте файл с названием info.php в корневом каталоге документов (например, /var/www/html).

sudo nano /var/www/html/info.php

Добавьте следующий PHP-код в файл.

Сохраните изменения и закройте документ. После этого введите в адресную строку вашего браузера

your-domain.com/info.php

Установка PHP 8.0 на Ubuntu 20.04

Смена версии PHP в конфигурации сервера Nginx.

Переключение версии PHP в конфигурации сервера Nginx происходит довольно просто. Как вам, возможно, известно, Nginx обрабатывает PHP-код с помощью PHP-FPM, который подключается через Unix-сокет. Сокет располагается в каталоге /run/php/.

На представленном скриншоте видно, что на моем сервере расположено несколько файлов сокетов PHP-FPM (.sock), которые соответствуют различным версиям PHP. В вашем конфигурационном файле блока сервера Nginx обычно можно найти следующий фрагмент для подключения к PHP-FPM серверу.

location ~ \.php$ < try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; >

Настройка нескольких версий PHP на сервере с Ubuntu 18.04 и nginx

Версия PHP для Nginx указывается в третьей строке данного фрагмента. Для того чтобы применить PHP8.0 в определённом блоке сервера Nginx, замените эту строку на:

fastcgi_pass unix:/run/php/php8.0-fpm.sock;

Чтобы задействовать PHP8.1 в конфигурации сервера Nginx, обновите данную строку на:

fastcgi_pass unix:/run/php/php8.1-fpm.sock;

Уверен, что вы уловили суть. Сохраните изменения в файле и закройте его, после чего перезагрузите Nginx, чтобы новые настройки заработали.

sudo systemctl reload nginx

Для того чтобы узнать, какая версия PHP работает на вашем сервере, создайте файл info.php в корневом каталоге ваших документов, например, в /var/www/html.

sudo nano /var/www/html/info.php

Добавьте следующий PHP-код в файл.

Читайте также:  Как получить или установить временную зону по умолчанию для PHP-скрипта

Сохраните изменения и закройте документ. После этого введите в адресную строку вашего браузера

your-domain.com/info.php

Установка PHP 8.0 на Ubuntu 20.04

Как задать стандартную версию PHP для командной строки

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

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

sudo update-alternatives --config php

установить версию PHP по умолчанию в командной строке на Ubuntu

Чтобы узнать текущую версию PHP в командной строке, введите следующее:

php --version

Исправление ошибок PHP

Не удается загрузить динамическую библиотеку.

Если вы встретили эту ошибку,

PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_mysql. so' (tried: /usr/lib/php/20190902/pdo_mysql. so (/usr/lib/php/20190902/pdo_mysql. so: undefined symbol: mysqlnd_allocator), /usr/lib/php/20190902/pdo_mysql. so. so (/usr/lib/php/20190902/pdo_mysql. so. so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Необходимо установить PHP и MySQL.

sudo apt install php8.0-mysql

Активируйте расширения PHP для работы с MySQL.

sudo phpenmod mysqlnd mysqli

Заключение

На этом всё! Надеюсь, данный руководств помог вам установить несколько версий PHP на Ubuntu 18.04, 20.04 и 22.04 с использованием Apache и Nginx. Кроме того, вы можете настроить ModSecurity, веб-приложенческий файрвол для защиты ваших PHP приложений от атак. Если вы работаете с веб-сервером Apache на Debian/Ubuntu, ознакомьтесь с следующим руководством.

  • Настройка ModSecurity с Apache на Debian/Ubuntu

Если вы работаете с веб-сервером Nginx на Debian или Ubuntu, ознакомьтесь с данным руководством:

  • Настройка ModSecurity с Nginx на Debian/Ubuntu

Если вы планируете создавать веб-приложения на PHP в среде Ubuntu Desktop, попробуйте использовать PhpStorm.

  • Два метода установки PhpStorm на Ubuntu Desktop

Если этот пост оказался для вас полезным, подписывайтесь на нашу бесплатную рассылку, чтобы получать ещё больше полезных материалов и учебников.