Переключение между несколькими версиями PHP в Ubuntu
В этом кратком руководстве рассказывается, как переключаться между несколькими версиями PHP в Ubuntu Linux и его производных. Это руководство официально протестировано на серверной версии Ubuntu 18.04 LTS. Однако он может работать как на новых, так и на старых версиях Ubuntu.
Введение
Иногда самая последняя версия установленного пакета может работать не так, как вы ожидали. Ваше приложение может быть несовместимо с обновленным пакетом и поддерживает только определенную старую версию пакета.
В таких случаях вы можете просто в кратчайшие сроки понизить проблемный пакет до более ранней рабочей версии. Обратитесь к нашим старым руководствам о том, как понизить версию пакета в Ubuntu и ее вариантах здесь и как понизить версию пакета в Arch Linux и его производных здесь.
В некоторых ситуациях вам не нужно понижать версию проблемных пакетов. В Linux мы можем одновременно использовать несколько версий одного и того же пакета.
Например, предположим, что вы тестируете PHP-приложение в стеке LAMP, развернутом в Ubuntu 18.04 LTS. Через некоторое время вы обнаружите, что приложение отлично работало в PHP 5.6, но не в PHP 7.2 (Ubuntu 18.04 LTS по умолчанию устанавливает PHP 7.x).
Собираетесь ли вы снова переустанавливать PHP или весь стек LAMP? Не обязательно.
Вам даже не придется понижать версию PHP до более ранней версии. Вы можете просто переключиться на предыдущую рабочую версию PHP за пару минут.
1. Переключение между несколькими версиями PHP
Давайте проверим установленную по умолчанию версию PHP с помощью команды:
php -v
Пример вывода:
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: Jul 4 2018 16:55:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2018, by Zend Technologies
Как видите, установленная версия PHP — 7.2.7.
После тестирования вашего приложения в течение пары дней вы обнаруживаете, что ваше приложение не поддерживает PHP 7.2. В этом случае рекомендуется иметь как версию PHP 5.x, так и версию PHP 7.x, чтобы вы могли легко переключаться между любой поддерживаемой версией в любое время.
Вам не нужно удалять PHP 7.x или переустанавливать стек LAMP. Вы можете использовать версии PHP 5.x и 7.x вместе.
Я предполагаю, что вы еще не удалили PHP 5.6 в своей системе. На всякий случай, если вы уже удалили его, вы можете установить его снова, используя PPA, как показано ниже.
Вы можете установить PHP 5.6 из PPA:
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
sudo apt install php5.6
1.1. Переход с PHP 7.x на PHP 5.x
1.1.1 Сначала отключите модуль PHP 7.2 с помощью команды:
sudo a2dismod php7.2
Пример вывода:
Module php7.2 disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
1.1.2. Затем включите модуль PHP 5.6:
sudo a2enmod php5.6
1.1.3 Установите PHP 5.6 в качестве версии по умолчанию с помощью команды:
sudo update-alternatives --set php /usr/bin/php5.6
1.1.4. Альтернативно вы можете запустить следующую команду, чтобы указать, какую общесистемную версию PHP вы хотите использовать по умолчанию.
sudo update-alternatives --config php
1.1.5. Введите выбранный номер, чтобы установить его в качестве версии по умолчанию, или просто нажмите ВВОД, чтобы сохранить текущий выбор.
Изменить версию PHP по умолчанию
1.1.6. Если вы установили другие расширения PHP, установите их также по умолчанию.
sudo update-alternatives --set phar /usr/bin/phar5.6
1.1.7. Наконец, перезапустите веб-сервер Apache:
sudo systemctl restart apache2
Теперь проверьте, является ли PHP 5.6 версией по умолчанию или нет:
php -v
Пример вывода:
PHP 5.6.37-1+ubuntu18.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
2. Перейдите с PHP 5.x на PHP 7.x.
Аналогичным образом вы можете переключиться с версии PHP 5.x на версию PHP 7.x, выполнив одну за другой следующие команды.
sudo a2enmod php7.2
sudo a2dismod php5.6
sudo update-alternatives --set php /usr/bin/php7.2
sudo systemctl restart apache2
Предостережение:
Последняя стабильная версия PHP 5.6 достигла окончания активной поддержки по состоянию на 19 января 2017 года. Однако PHP 5.6 продолжит получать поддержку по критическим проблемам безопасности до 31 декабря 2018 года. Поэтому рекомендуется как можно скорее обновите все свои PHP-приложения, чтобы они были совместимы с PHP 7.x.
Если вы хотите предотвратить автоматическое обновление PHP в будущем, обратитесь к следующему руководству.
- Как предотвратить автоматическую установку, обновление или удаление пакета в Ubuntu
И это все на данный момент. Вот как мы устанавливаем несколько версий PHP в Ubuntu. Используя команду Update-alternatives, мы можем быстро перейти с одной версии PHP на другую в Ubuntu и установить версию PHP по умолчанию.