Изменить версию php ubuntu

Обновлено: 03.07.2024

В этом руководстве представлены шаги, необходимые для переключения между несколькими версиями PHP, установленными в Ubuntu 20.04 LTS для CLI, веб-сервера Apache и NGINX.

В предыдущем руководстве были описаны шаги, необходимые для установки нескольких версий PHP в Ubuntu 20.04 LTS. Вы можете узнать, как установить несколько версий PHP в Ubuntu 20.04 LTS.

Переключение версий PHP — интерфейс командной строки

Проверьте текущий активный PHP, как показано ниже.

Мы можем настроить несколько версий PHP, установленных в Ubuntu 20.04 LTS, с помощью команд, как показано ниже.

Теперь мы можем переключаться между PHP 7.0 и PHP 8.0 с помощью команд, как показано ниже.

Теперь еще раз проверьте текущий активный PHP, как показано ниже.

Это полезно для приложений, надежных на PHP, в режиме CLI для запуска программ на основе консоли. Мы можем переключаться между несколькими версиями PHP, установленными в системах Ubuntu.

Переключение версий PHP — веб-сервер Apache

Как и в режиме CLI, мы также можем переключаться между несколькими версиями PHP для веб-сервера Apache. В предыдущем уроке «Как установить несколько версий PHP в Ubuntu 20.04 LTS» мы видели, что версия PHP остается неизменной, т. е. PHP 7.0, даже после установки последней версии PHP, т. е. PHP 8.0, как показано на рис. 1.

Мы можем переключаться между версиями PHP для веб-сервера Apache с помощью команд, как показано ниже.

Теперь снова обновите файл info.php с помощью веб-браузера. Он должен быть похож на рис. 2.

Мы также можем вернуться к PHP 7 с помощью тех же команд.

Переключение версий PHP — Веб-сервер Apache — PHP FPM

Вместо переключения версии PHP для веб-сервера Apache, которое влияет на все виртуальные хосты, мы также можем настроить выбранный виртуальный хост для использования указанной нами версии PHP. Мы можем сделать это, используя PHP FPM, установленный нами, как показано в разделе Как установить несколько версий PHP в Ubuntu 20.04 LTS.

Мы видим, что и PHP 7.0 FPM, и PHP 8.0 FPM находятся в рабочем состоянии. Теперь включите Apache2 для использования нескольких версий PHP с помощью команды, как показано ниже.

Кроме того, обновите виртуальный хост, как показано ниже.

Кроме того, перезагрузите Apache, как показано ниже.

Теперь проверьте вывод info.php с помощью браузера. Он должен отображать конфигурации, специфичные для PHP 7. Точно так же мы можем изменить PHP 7 на PHP 8 для выбранного виртуального хоста, не затрагивая другие виртуальные хосты.

Переключение версий PHP — NGINX

Переключить версию PHP на NGINX несложно, так как он использует PHP FPM для выполнения скриптов PHP. Мы можем просто указать версию PHP при настройке блока сервера, как показано ниже. Вы также можете узнать больше о том, как установить PHP для Nginx в Ubuntu 20.04 LTS.

Обзор

В этом руководстве представлены шаги, необходимые для переключения между несколькими версиями PHP, установленными в Ubuntu 20.04 LTS для CLI, веб-сервера Apache и NGINX.

В этом кратком руководстве описаны шаги по переключению между несколькими версиями 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 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:

1.1. Переключиться с PHP 7.x на PHP 5.x

1.1.1 Сначала отключите модуль PHP 7.2 с помощью команды:

Пример вывода:

1.1.2. Затем включите модуль PHP 5.6:

1.1.3 Установите PHP 5.6 в качестве версии по умолчанию с помощью команды:

1.1.4. Кроме того, вы можете запустить следующую команду, чтобы указать общесистемную версию PHP, которую вы хотите использовать по умолчанию.

1.1.5. Введите номер выбора, чтобы сделать его версией по умолчанию, или просто нажмите ENTER, чтобы сохранить текущий выбор.

Изменить версию PHP по умолчанию

Изменить версию PHP по умолчанию

1.1.6. Если вы установили другие расширения PHP, установите их также по умолчанию.

<р>1.1.7. Наконец, перезапустите веб-сервер Apache:

Теперь проверьте, является ли PHP 5.6 версией по умолчанию или нет:

Пример вывода:

2. Переключиться с PHP 5.x на PHP 7.x

Точно так же вы можете переключиться с версии PHP 5.x на версию PHP 7.x, выполнив следующие команды одну за другой.

Предостережение:

По состоянию на 19 января 2017 года окончательная стабильная версия PHP 5.6 прекратила активную поддержку. Тем не менее, PHP 5.6 продолжит получать поддержку по критическим проблемам безопасности до 31 декабря 2018 года. приложения должны быть совместимы с PHP 7 .x как можно скорее.

Если вы хотите предотвратить автоматическое обновление PHP в будущем, обратитесь к следующему руководству.

Когда я отключаю php7.1 в модулях Apache и включаю php 5.6, Apache распознает изменение и использует интерпретатор php 5.6, как и ожидалось.

Но когда я запускаю внутренний веб-сервер php из командной строки:

php обрабатывает запросы, используя php 7. Так как же переключаться между php 5.6 и php 7.1 в командной строке?



18 ответов 18

Интерактивный режим переключения

Переключение вручную

Из PHP 5.6 => PHP 7.1

В вашей системе установлен PHP 5.6 по умолчанию, и вам необходимо переключиться на PHP 7.1.

Из PHP 7.1 => PHP 5.6

В вашей системе по умолчанию установлен PHP 7.1, и вам необходимо переключиться на PHP 5.6.



У меня возникла ошибка сегментации при перезапуске apache2. Затем я обнаружил, что у меня одновременно включено более одной версии PHP. Мне пришлось отключить и 7.1, и 7.2, прежде чем включить 5.6.

должно работать для всех версий Ubuntu после 16.04 (18.04 и 20.04)

Вот что вы должны увидеть в качестве ответа

Выберите подходящую версию

@SandOfVega это вывод команды и может отображать что-то 2 раза, если это значение по умолчанию, я думаю, но ваш вывод может отличаться.

Чтобы просмотреть все доступные версии и выбрать из них:


Думаю, вам стоит попробовать это

С php5.6 на php7.1

С php7.1 на php5.6

Дайте достаточные пояснения к своим ответам, чтобы понять, почему этот код работает и что он означает. Чтобы ответ был полезен для пользователей, столкнувшихся с такой же проблемой. Перейдите по ссылке, чтобы узнать, как писать хорошие ответы.

На самом деле я бы не рекомендовал использовать a2enmod для php 5 или 7. Я бы использовал update-alternatives . Вы можете выполнить команду sudo update-alternatives --config php, чтобы указать общесистемную версию PHP, которую вы хотите использовать. Это делает ваши версии командной строки и apache одинаковыми. Вы можете прочитать больше об альтернативах обновлений на справочной странице.


У меня не работает. PHPINFO по-прежнему всегда показывает одну и ту же версию, даже после того, как я пытаюсь выбрать.

в Ubuntu 20.04 переключение между версиями PHP 8.0 и PHP 7.4:

ПОНИЖЕНИЕ С PHP 8.0 до PHP 7.4

ОБНОВИТЬ PHP 7.4 до PHP 8.0

проверьте изменения:

PHP 8.0.3 (cli) (построено: 5 марта 2021 г., 07:54:13) ( NTS ) Авторское право (c) The PHP Group Zend Engine v4.0.3, Авторское право (c) Zend Technologies с Zend OPcache v8.0.3, Copyright (c), Zend Technologies

PHP 7.4.16 (cli) (построено: 5 марта 2021 г., 07:54:38) ( NTS ) Авторское право (c) The PHP Group Zend Engine v3.4.0, Авторское право (c) Zend Technologies с Zend OPcache v7.4.16, Copyright (c), Zend Technologies

  1. добавьте PHP-файл в рабочую локальную среду, например /var/www/html/ path, добавив phpinfo(); и получить информацию о PHP в браузере (в верхней части страницы доступна версия PHP)


Нет ли изменений в php-config или phpize, как в других примерах? Что-то вроде sudo update-alternatives --set php-config /usr/bin/php-config8.0

Вы можете создать скрипт для переключения между версиями: sudo nano switch_php, затем введите следующее:

выйти и сохранить, сделать его исполняемым: sudo chmod +x switch_php

Чтобы выполнить скрипт, просто введите ./switch_php [VERSION_NUMBER], где параметр равен 7 или 5.6

Теперь вы можете легко переключиться с PHP7 на PHP 5.6!

Выглядит многообещающе, но что делает флаг «n» в команде ln при использовании «ln -sfn». Я не смог найти этот флаг ("n") нигде в документации.

@FakharAnwar man ln : -n, --no-dereference : рассматривать LINK_NAME как обычный файл, если это символическая ссылка на каталог

Возможно, в вашей системе установлена ​​старая версия PHP, такая как PHP 5.6, и вы также установили PHP 7.2, так что на вашем компьютере несколько PHP. Есть некоторые приложения, которые были разработаны, когда старая версия PHP 5.6 была последней версией, они все еще работают, и вы работаете над этими приложениями. Вы можете одновременно работать с Laravel, но для начала работы Laravel требуется PHP 7+. Получил картинку?

В этом случае вы можете переключаться между версиями PHP в соответствии с вашими требованиями.

Учебное пособие по Ubuntu 16.04 — Как вручную обновить версию PHP

Ubuntu LTS Server широко используется во многих средах VPS и выделенного хостинга. Тем не менее, он поставляется с устаревшей веткой PHP 7.0.x, и многие веб-приложения, включая WordPress, не могут работать на нем должным образом из-за проблем с безопасностью и производительностью. На самом деле, WordPress уже выдает вам предупреждение о том, что PHP требует обновления на домашней странице панели администратора.

Это руководство предназначено для самоуправляемых и размещенных на собственном сервере серверов. Если вы используете cPanel, DirectAdmin, Plesk, Webmin… или Shared/Managed/CloudLinux хостинг, вы можете просто изменить версию PHP прямо из самой панели управления (вот пример для cPanel, конечно, не забудьте поставить все необходимые галочки для расширений PHP, которые необходимы вашему приложению для правильной работы!). Свяжитесь со службой поддержки хостинга для получения более подробной информации.

Как вручную обновить версию PHP — Учебное пособие по Ubuntu Server LTS

Логотип PHP

В этой краткой статье мы покажем вам, как вручную установить и обновить версию PHP до последней версии 7.x или 8.x на сервере Ubuntu LTS VPS с помощью диспетчера пакетов apt. Если вы не хотите выполнять эту относительно простую процедуру на рабочем сервере, вы можете установить Ubuntu Server LTS в среде виртуальной машины и сначала запустить симуляцию или упражнение в песочнице. Как только все пойдет хорошо, вы можете повторить это в производственной среде, вся процедура не должна занимать более 10-15 минут для настройки (при условии, что вы регулярно обновляли программное обеспечение сервера).

ВНИМАНИЕ: Если на вашем сервере установлена ​​устаревшая версия Ubuntu 16 (или ниже), вы больше не сможете следовать этому руководству! Причина объясняется в разделе комментариев ниже.

ШАГ 1. Выполните начальное обновление/обновление пакетов

Войдите через SSH на свой сервер (например, с помощью PuTTY) и выполните следующие команды:

обновление sudo apt
обновление sudo apt

ШАГ 2. Установите поддержку стороннего репозитория

Чтобы иметь возможность использовать команду add-apt-repository, установите необходимую поддержку стороннего репозитория:

sudo apt install software-properties-common

ШАГ 3. Добавьте репозиторий PPA Ондржея Сури

ПРИМЕЧАНИЕ: подтверждайте нажатием ENTER после каждой команды

sudo add-apt-repository ppa:ondrej/php

[*] если вы используете PHP в качестве модуля Apache:

sudo add-apt-repository ppa:ondrej/apache2

[*] если вы используете PHP с Nginx:

sudo add-apt-repository ppa:ondrej/nginx

ШАГ 4. Выполните обновление/обновление пакетов

ПРИМЕЧАНИЕ. На данный момент игнорируйте сообщение «Следующие пакеты были сохранены» относительно старых компонентов PHP 7.0.x

обновление sudo apt
обновление sudo apt

ШАГ 5. Установите PHP 7.x или 8.x

Технически PHP 7.3 является EOL / больше не поддерживается, поэтому вам следует рассмотреть возможность установки версии 7.4 или 8.0. Конечно, вы все равно будете получать обновления безопасности до конца 2021 года, если решите установить ветку 7.3.

ПРИМЕЧАНИЕ. При появлении запроса выберите параметр СОХРАНЯТЬ локальную версию файла(ов) конфигурации!

установите PHP 7.3 с общими компонентами:
sudo apt install php7.3 php7.3-cli php7.3-fpm php7.3-apcu php7.3-opcache php7.3 -общий php7.3-груша php7.3-завиток php7.3-zip php7.3-mcrypt php7.3-mysql php7.3-mbstring php7.3-xml php7.3-gd php7.3-gmagick php7.3-imagick php7.3-xmlrpc php7.3-geoip

установите PHP 7.4 с общими компонентами:
sudo apt install php7.4 php7.4-cli php7.4-fpm php7.4-apcu php7.4-opcache php7.4 -общий php7.4-груша php7.4-curl php7.4-zip php7.4-mcrypt php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-gmagick php7.4 -imagick php7.4-xmlrpc php7.4-geoip

установите PHP 8.0 с общими компонентами:
sudo apt install php8.0 php8.0-cli php8.0-fpm php8.0-apcu php8.0-opcache php8.0 -общий php8.0-груша php8.0-curl php8.0-zip php8.0-mcrypt php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-gmagick php8.0 -imagick php8.0-xmlrpc php7.3-maxminddb

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

apt-cache search --names-only ^php

ШАГ 6. Настройте файл PHP .ini

ПРИМЕЧАНИЕ. Для этой цели используйте терминал через клиент SSH или FTP/SFTP и текстовый редактор (например, Notepad++).

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

Файлы конфигурации PHP - Папка etc - Сервер Ubuntu 16.04 LTS через клиент WinSCP SFTP

Файлы конфигурации PHP — папка etc — сервер Ubuntu 16.04 LTS через клиент WinSCP SFTP

Если вы запускаете PHP как модуль apache2, посетите /etc/php/php7.3/apache2/php.ini или /etc/php/php7.4/apache2/php.ini или /etc/php/php8.0/ apache2/php.ini и настройте переменные PHP (например, РАЗМЕР ПАМЯТИ, ПРИСОЕДИНЯЕМЫЙ ФАЙЛ, ОГРАНИЧЕНИЕ ВРЕМЕНИ ВЫПОЛНЕНИЯ, ЗАПРЕЩЕННЫЕ КОМАНДЫ и т. д.).

Если вы запускаете PHP через интерфейс FastCGI Process Manager (FPM), соответствующий файл PHP .ini находится в /etc/php/7.x/fpm/php.ini или /etc/php/8.x/fpm/. Процедура настройки php.ini и сервера отличается. Вам необходимо обновить файл конфигурации сервера, чтобы использовать новый PHP-FPM, как вы делали это раньше при настройке оригинальной версии php-7.0 FastCGI.

ШАГ 7. Установите PHP 7.x или PHP 8.x в качестве версии PHP по умолчанию

Двоичный файл Ubuntu PHP 7.0.x по умолчанию по-прежнему обрабатывает все запросы PHP, нам нужно изменить его:

sudo update-alternatives --set php /usr/bin/php7.3

sudo update-alternatives --set php /usr/bin/php7.4

sudo update-alternatives --set php /usr/bin/php8.0

ПРИМЕЧАНИЕ: следующие команды нужны только в том случае, если вы запускаете PHP как модуль apache2!

Отключить старую версию модуля PHP apache2:

sudo a2dismod php7.0

Включить новую версию модуля PHP apache2:

sudo a2enmod php7.3

sudo a2enmod php7.4

sudo a2enmod php8.0

ШАГ 8. Перезапустите сервер

перезапустите службу сервера Apache:

перезагрузка службы sudo apache2

sudo systemctl перезапустить apache2

перезапустите службу сервера Nginx:

перезагрузка службы sudo nginx

sudo systemctl перезапустить nginx

ГОТОВО!

ШАГ 9. Проверка установки

Вы можете проверить внутри своего приложения, например:

Администратор WordPress > Инструменты > Состояние сайта > вкладка "Информация" > Сервер > Строка версии PHP

Или вы можете создать простой файл check.php с помощью следующей команды:

Не забывайте хотя бы раз в неделю (или две) выполнять регулярные задачи по обновлению и обновлению серверного программного обеспечения, чтобы не отставать от соответствующих исправлений ошибок, исправлений безопасности и новых функций!

Кроме того, не забудьте проверить совместимость плагинов и тем с конкретной версией PHP и устранить любые проблемы до или сразу после выполнения обновления PHP, хотя в целом все должно быть в порядке, так как между 7.0.x и более поздними версиями не было внесено радикальных изменений. 7.x.0, которые обычно должны вызывать серьезные проблемы (ну, кроме, может быть, этой, но она точно не критична).

ШАГ 10. Очистка (удаление) старых пакетов

Через несколько недель или месяцев, когда вы убедитесь, что все работает, вы можете при желании удалить неиспользуемые и старые пакеты с помощью следующей команды:

sudo apt autoremove

Этот шаг необязателен, но имейте в виду, что некоторые пакеты старой версии PHP будут сохранены. Периодически проверяйте ответное сообщение сервера после выполнения команд apt update/upgrade.

Читайте также: