Этот краткий учебник проведет вас через шаги по переключению между несколькими версиями PHP в Ubuntu Linux и его производных. Это руководство официально протестировано на серверной версии Ubuntu 18.04 LTS. Он может работать и с другими старыми или новыми версиями Ubuntu.
Введение
Иногда самая последняя версия установленного пакета может работать не так, как вы ожидали. Ваше приложение может быть несовместимо с обновленным пакетом и поддерживать только определенную старую версию пакета.
В таких случаях вы можете просто моментально понизить версию проблемного пакета до его более ранней рабочей версии.
Но в некоторых ситуациях вам не нужно понижать версию проблемных пакетов. В Linux мы можем одновременно использовать несколько версий одного и того же пакета.
Например, допустим, вы тестируете приложение PHP в стеке LAMP, развернутом в Ubuntu 18.04 LTS. Через некоторое время вы обнаружите, что приложение нормально работало в PHP 5.6, но не в PHP 7.2 (Ubuntu 18.04 LTS по умолчанию устанавливает PHP 7.x).
Собираетесь ли вы снова переустанавливать PHP или весь стек LAMP? Не обязательно.
Вам даже не нужно понижать версию PHP до более ранней версии. Вы можете просто переключиться на предыдущую рабочую версию PHP за пару минут.
Переключение между несколькими версиями PHP
Давайте проверим установленную по умолчанию версию PHP с помощью команды:
$ php -v
Пример вывода:
PHP 7.2.7-0ubuntu0.18.04.2 (cli) (построено: 4 июля 2018 г., 16:55:24) (NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) Zend Technologies, 1998–2018 гг. с Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2018, 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
Переключиться с PHP 7.x на PHP 5.x
1.1 Сначала отключите модуль PHP 7.2 с помощью команды:
$ sudo a2dismod php7.2
Пример вывода:
Модуль php7.2 отключен. Чтобы активировать новую конфигурацию, вам нужно запустить: systemctl restart apache2
1.2 Затем включите модуль PHP 5.6:
$ sudo a2enmod php5.6
1.3 Установите PHP 5.6 в качестве версии по умолчанию с помощью команды:
$ sudo update-alternatives --set php /usr/bin/php5.6
1.4 В качестве альтернативы вы можете запустить следующую команду, чтобы установить общесистемную версию PHP, которую вы хотите использовать по умолчанию.
$ sudo update-alternatives --config php
1.5 Введите номер выбора, чтобы установить его как версию по умолчанию, или просто нажмите ENTER, чтобы сохранить текущий выбор и изменить версию PHP по умолчанию
1.6 Если вы установили другие расширения PHP, установите их также по умолчанию.
$ sudo update-alternatives --set phar /usr/bin/phar5.6
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) Zend Technologies, 1998–2016 гг. с Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, Zend Technologies
Переключитесь с 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 г., после эта версия получала поддержку для критических проблем безопасности до 31 декабря 2018 г. В настоящий момент эта версия PHP не поддерживается. Поэтому рекомендуется обновить все ваши приложения PHP, чтобы они были совместимый с PHP 7.x или 8,х как можно скорее.