Установка разных версий PHP на Linux Ubuntu
Обновлено: 03.04.2023 Опубликовано: 06.11.2021
В Ubuntu можно легко управлять несколькими версиями PHP. Мы рассмотрим процесс установки разных версий PHP и жонглирования ими.
Установка PHP
В зависимости от необходимой версии PHP и версии Ubuntu, подход к установке может отличаться.
Установка базовой версии
Это самый простой способ. Каждая версия Ubuntu в своем репозитории содержит соответствующую версию PHP.
Посмотреть, какая версия будет установлена из репозитория системы можно командой:
apt search —names-only ‘^php[.0-9]$’
Установка выполняется одной командой:
apt install php
Установка определенной версии
Если нам необходима версия PHP, которой нет в репозитории, выполняем установку дополнительного — для этого вводим две команды:
apt install software-properties-common
.
FileNotFoundError: [Errno 2] No such file or directory: ‘gpg’
Устанавливаем gnupg-agent:
apt install gnupg-agent
Теперь можно установить нужную версию интерпретатора:
apt-get install php7.4
apt-get install php8.0
* в данном примере 7.4 и 8.
Выбор версии PHP по умолчанию
Посмотреть текущую версию php, которая работает по умолчанию можно командой:
Сменить версию по умолчанию:
update-alternatives —config php
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
————————————————————
* 0 /usr/bin/php8.0 80 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.0 80 manual mode
* в данном примере используется версия php8 как версия по умолчанию.
Для смены, система предложит нам выбрать версию из списка:
Press to keep the current choice[*], or type selection number: 1
* так мы переключимся на php7.4.
Установка расширений
Расширения устанавливаются с синтаксисом:
apt install php-
Для версии, которая идет по умолчанию в репозитории, установку можно выполнить так:
apt install php-mysqli
В остальных случаях обязательно указываем версию:
apt install php7.4-mysqli
Настройка PHP
В Ubuntu настройки PHP находятся в разных файлах — для каждой версии и для каждой системы, которая обрабатывает запросы.
Например, для php версии 8.0, которая будет запускаться из командной строки, файл будет:
php переключение версий
После обновления до Ubuntu 16.04 из коробки установлен php7. Для моих проектов использую php5.6. Подскажите, как управлять версиями, и использовать php5.6 по умолчанию?
$ php -v PHP 7.0.6-1+donate.sury.org~xenial+1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies $ whereis php php: /usr/bin/php /usr/bin/php7.0 /usr/bin/php5.6 /usr/lib/php /etc/php /usr/share/php7.0-opcache /usr/share/php7.0-gd /usr/share/php /usr/share/php5.6-opcache /usr/share/php7.0-mcrypt /usr/share/php7.0-json /usr/share/php7.0-common /usr/share/php7.0-readline /usr/share/php5.6-json /usr/share/php7.0-xml /usr/share/php7.0-mysql /usr/share/php5.6-common /usr/share/php5.6-readline /usr/share/man/man1/php.1.gz
Отслеживать
67.9k 216 216 золотых знаков 77 77 серебряных знаков 219 219 бронзовых знаков
Как переключаться между несколькими версиями PHP в Ubuntu
Этот краткий учебник проведет вас через шаги по переключению между несколькими версиями 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,х как можно скорее.
Связанные ссылки
- ← Лучшие новые функции CSS на середину 2022 года
- Как отменить регистрацию пользовательского типа записи (таксономии) →
Как быстро переключить версии PHP в Ubuntu
Большинство проектов с которыми я работаю, требуют установленного PHP версии 7.x , но у меня также имеются другие параллельные задачи, которые требуют старых версий — 5.6 или даже 5.3. Во времена использования мною Windows + Open Server, переключение версий можно было сделать нажав пару кнопок в настройках, однако на данный момент при использовании Ubuntu я столкнулся с определенными трудностями о которых хочу поделиться далее…
Установка PHP в Ubuntu
Предполагается, что у вас уже установлен какой-нибудь PHP версии 7.x. Если нет, то давайте это исправим:
apt-get update && apt-get upgrade apt-get install software-properties-common add-apt-repository ppa:ondrej/php apt-get update apt-get install php7.2 apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml
Теперь, например устанавливаем версию 5.6:
sudo apt install php5.6
После всех этих команд на вашей машине установлены 7.2 и 5.6 версии. Выведем список всех установленных версий в меню, которое позволит выбрать нужную версию:
sudo update-alternatives --config php
После этого вы увидите примерно такое:
There are 2 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/php7.2 72 auto mode 1 /usr/bin/php5.6 56 manual mode 2 /usr/bin/php7.2 72 manual mode Press to keep the current choice[*], or type selection number:
В коде выше можно выбрать например пункт — 1 и тогда версия переключится на 5.6. Проверить это можно следующей командой:
php -v
Которая вернет примерно такое сообщение:
PHP 5.6.38+deb.sury.org+2 (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
Таким образом, теперь вы можете легко менять свои версии даже легче чем в Open Server
