Сменить версию php debian

Обновлено: 08.07.2024

PHP 8.0 содержит много новых функций и улучшений производительности, синтаксиса, безопасности и стабильности. Установка PHP 8.0 практически на любой сервер упрощается благодаря предварительно скомпилированным пакетам, доступным во всех поддерживаемых в настоящее время версиях Debian и Ubuntu.

Изменения расширений и зависимостей в PHP 8.0

Несмотря на огромное количество изменений в PHP 8.0, в принципе было произведено не так много изменений в его зависимостях и структуре расширений.

Расширение JSON теперь всегда доступно , и нет флага компиляции для его исключения. Это означает, что больше нет необходимости явно устанавливать пакет php-json.

Расширение xmlrpc перемещено в PECL по уважительным причинам. Репозитории программного обеспечения, упомянутые в этом посте, не включают xmlrpc расширения для PHP 8.0.

Кроме того, в Windows название расширения GD было изменено с php_gd2.dll на php_gd.dll.

Изменения в файле INI PHP 8.0

Также есть несколько изменений в файле INI.

  • По умолчанию утверждения вызывают исключения - ( assert.exception=1)
  • Отображение ошибок по умолчанию установлено на E_ALL - ( error_reporting=-1)
  • При запуске теперь по умолчанию ошибки включены - ( display_startup_errors=1)
  • Новая функция JIT в PHP 8.0 добавляет несколько новых директив INI.
  • Параметр zend.exception_string_param_max_len для настраиваемой длины строки трассировки стека исключений

Установка PHP 8

1. Необходимо добавить репозиторий ondrej/phpPPA

Приведенные выше шаги добавят PPA в качестве источника пакетов, который содержит все пакеты PHP и их зависимости, такие как argon2 и libzip.

2. Установите PHP 8.0 и нужные расширения

Все пакеты PHP 8.0 следуют шаблону php8.0-имя_расширения , и пакет php8.0-common включает необходимый набор расширений по умолчанию.

Установите PHP 8.0 CLI для работы в консоли

Вы можете установить дополнительные расширения по тому же шаблону php8.0-имя_расширения. Обратите внимание, что вам не нужно устанавливать, так php8.0-json, так как теперь он включен по умолчанию.

Пример установки еще нескольких полезных расширений:

Для разработки также могут быть установлены инструменты покрытия кода или отладчик Xdebug.

Установка PHP8 fpm

В зависимости от используемого веб-сервера вам необходимо будет установить дополнительные пакеты для интеграции с веб-сервером.

Для использования Apache mpm_event, Nginx, Litespeed и т. д. нужно будет установить php8.0-fpm

Для использования Apache mod_php установите libapache2-mod-php8.0

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

Если вам потребуется удалить старые пакеты PHP, можно воспользоваться командой

Это предполагает, что вы используете PHP 7.4 в качестве предыдущей версии. Но будьте осторожны, сначала сто раз проверьте что вы больше не используете старые версии в своих проектах.

Смена установленной версий PHP по умолчанию.

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

И введя номер нужной вам предыдущей версии PHP.


Веб-разработчик со стажем программирования более 9 лет, всегда в процессе учебы и созидания.


Проблема “ хочу новую версию %software% на моем стареньк … стабильном Debian/CentOS…” так же стара, как *nix-мир. Способов добиться желаемого хватает. Есть масса решений как притащить в систему несколько версий одного и того же софта. Но дальше хочется не просто иметь ещё одну версию, но и управлять тем, какая из версий доступна в системе по умолчанию, для конкретных приложений или пользователей.

Что делать, если хочется сменить системную версию PHP на одну из кастомных сборок? Давайте отталкиваться от того, что у вас на сервере уже установлено несколько версий PHP и вы хотите, чтобы в консоли команда php была конкретной версии, отличающаяся от той, что шла с системой. В этой статье я расскажу, как правильно это настроить, чтобы не было проблем с будущими пакетными обновлениями.

В качестве примера возьмём сервер на CentOS 7, где установлен родной PHP:

Также на сервере установлен наш Plesk с парой своих сборок PHP:

Допустим, мы хотим переключить систему на использование PHP 5.6 по умолчанию (переключать глобально PHP с версии 5.4 на 7 как-то сс… страшно — чему-то в системе может поплохеть от такого). Бинарь PHP 5.6 лежит у нас тут:

Как же сделать так, чтобы система использовала эту, нужную нам, версию PHP?

Сначала посмотрим на системную переменную PATH

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

Как видно из PATH , /usr/local/bin находится в списке раньше, чем /usr/bin . Значит, если мы поместим ссылку на альтернативную версию PHP “пораньше”, в /usr/local/bin , то именно она и будет использоваться при вызове команды php вместо /usr/bin/php . Мы можем создать эту ссылку руками (и всё даже будет работать), но правильнее использовать специально созданную для этих целей утилиту update-alternatives (в CentOS это просто alternatives , но есть симлинка update-alternatives , поэтому дальше будем оперировать именно этой командой, как универсальной для Debian/Ubuntu/CentOS/и т.д.).

Теперь, давайте зарегистрируем все доступные версии PHP с помощью этой команды:

Цифры 10, 20 и 30 — это приоритет. Он работает для автоматического выбора, если администратор сам не выбрал конкретную версию. Самое большое число определяет выбор "по умолчанию".

Проверим, что php теперь указывает на созданную командой симлинку:

Давайте разберемся, что же update-alternatives сделала для нас:

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

То есть, мы успешно настроили группу PHP в update-alternatives , где по умолчанию в автоматическом режиме выбран системный PHP. Сейчас у нас есть возможность переключить команду PHP на любую другую версию..

Давайте переключимся на PHP версии 5.6, которая идет в поставке с Plesk'ом:

Проверяем, что переключение произошло:

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

С помощью update-alternatives можно выбирать не только версию PHP, но и многие другие вещи, например разные версии phpunit или редактор по умолчанию в системе. Подход этот универсален для различных систем. Не изобретая своего велосипеда, используя существующие инструменты, вы можете быть уверенным, что не устроили для ваших коллег квеста “Ну почему оно так работает?!”. Настраивайте свою систему правильно.

Переключатель версий PHP 5.6, 7.0, 7.1, 7.2, 7.3, 7.4 для Debian и Ubuntu

Это руководство позволит Вам, настроить переключать версии PHP 5.6, 7.0, 7.1, 7.2, 7.3 и 7.4 в VestaCP, для определенных доменов.

Для чего нужен выбор версии PHP на веб сервере, спросите вы. Ведь новые версии более безопасны и и. п..

Тут у всех разные ситуации. Кому то нужно развернуть на сервере старую версию сайта на Joomla. Joomla никто не обновлял и сайт может работать только на старой версии PHP, например PHP 5.6.;
Вторя ситуация, когда у Вас есть модуль для DLE который работает на PHP начиная с 5.6 и заканчивая 7.0, а на вашем сервере установлена версия PHP 7.2 или 7.4.

Ранее мы публиковали статью о настройке мульти PHP. На там возникли сложности при установке на Ubuntu 18.4.

Настройка селектора PHP для Debian и Ubuntu VestaCP

Руководство предназначено для операционных систем Debian и Ubuntu.

PHP будет работать через PHP-FPM. Это является более быстрым решением, чем другой существующий PHP-переключатели, которые использует только старое решение phpfcgid (так как с PHP-FPM вы можете использовать opcache).

Связь с PHP-FPM будет происходить через Unix-сокеты, что также является самым быстрым обменом между демонами.

Также, данное решение позволит Вам напрямую связывать nginx и PHP-FPM, избегая использования Apache для желаемых доменов (Apache устанавливается по умолчанию при установке VestaCP).

Да, вы не ослышались, вы можете легко создать стек nginx <-> PHP-FPM, даже если у вас установлен Apache.

И еще лучшая новость - вы можете использовать его только на желаемых доменах, поэтому все остальные домены останутся нетронутыми и могут использовать обычный режим работы с дефолтовой версией PHP.

Первый этап настройки переключателя PHP

Первый обязательный шаг для Debian 10:

Первый обязательный шаг для Debian 9:

Первый обязательный шаг для Debian 8:

Первый обязательный шаг для Ubuntu:

В ситуации если вы получите ошибку на этом этапе, приблизительно такого вида:

Для решения этой проблемы, запустите команду:

После чего, добавьте в любое место файла /etc/wgetrc такую строчку:

Либо воспользуйтесь командой, для того, чтобы добавить эту строчку в низ файла:

После этих манипуляций, wget загрузить файл без ошибки сертификата.

Второй обязательный шаг для Debian и Ubuntu

Вторым шагом для обеих операционных систем, будет запуск двух команд?

Теперь переходим к PHP. Выберите нужную вам версию.

Теперь просто перейдите в VestaCP, отредактируйте WEB для желаемого домена выбрав желаемую версию PHP:

VestaCP выбор версии PHP для сайта

Теперь у многих отпала необходимость перехода на другую панель управления хостингом, и появилась возможность, без труда понижать и повышать версию PHP для ваших сайтов на VDS/VPS под управлением VestaCP.

Панель управления FASTPANEL ® позволяет применять альтернативные версии php индивидуально для каждого сайта.

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

PHP 5.2 недоступна на некоторых новых ОС, в частности на Ubuntu 20.04 и Debian 11

В этой статье рассматриваются следующие вопросы:

Смена версии php для сайта на примере версии php 7.4

1. П ерейдите в боковой панели в меню “Настройки” -> “Приложения”:


2. Найдите приложение php74, нажмите на иконку “Установить” и до ждитесь завершения установки:


3. Откройте карточку сайта, для которого требуется переключить версию PHP:


4. В карточке сайта откройте раздел "Настройки":


5. Выполните следующие действия:

  • Откройте подраздел Обработчик PHP (1)
  • Выберите FastCGI в параметре Режим работы PHP (2)
  • Выберите нужную версию PHP в параметре Версия PHP (3)
  • Нажмите Сохранить изменения (4)


Вместо FastCGI можно также выбрать режим PHP-FPM или CGI, но в 95% случаев подходит именно FastCGI. Подробнее режимы работы PHP рассматриваются в следующей статье.

Для проверки можно создать в корневом каталоге Вашего сайта файл info.php с содержимым:

Если все сделано правильно, откроется страница с технической информацией о версии php 7.4

После проверки обязательно удалите этот файл из корневой директории сайта.

Как сменить версию PHP (CLI) для пользователя

Панель управления FASTPANEL ® позволяет переключать версии PHP для каждого пользователя в отдельности. Это действие позволит обращаться к альтернативной версии PHP в командной строке с помощью обычной команды php.

Это действие повлияет только на версию PHP в командной строке, а также на задания в планировщике crontab. Версии PHP, подключенные к сайтам, останутся неизменными.

Для переключения версии PHP для пользователя следует перейти в раздел "Пользователи", там открыть параметры нужного пользователя и выбрать подходящую версию через в параметре "Версия PHP (CLI)":


После изменения этого параметра следует установить новое SSH-соединение с сервером. В ранее открытых сессиях версия PHP останется прежней.

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

Как правило, для запуска скриптов через командную строку используется команда следующего вида:

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

Если ранее версия PHP была изменена согласно инструкции "Как сменить версию PHP (CLI) для пользователя", то обычная команда php будет использовать не основную серверную версию PHP, а выбранную в настройках пользователя.

Чтобы запустить скрипт через альтернативную версию, следует изменить команду php на полный путь до альтернативного интерпретатора. В случае с PHP 7.4 это будет /opt/php74/bin/php, то есть команда уже будет выглядеть так

пример запуска скрипта через стандартный и альтернативный интерпретаторы:


Для прочих альтернативных версий путь будет аналогичный, например для PHP 5.2 - /opt/php52/bin/php , а для PHP 7.0 - /opt/php70/bin/php

Как запускать скрипт через альтернативную версию PHP в планировщике crontab

Как правило, для запуска скриптов через планировщик crontab используется команда следующего вида:

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

Если ранее версия PHP была изменена согласно инструкции "Как сменить версию PHP (CLI) для пользователя", то обычная команда php будет использовать не основную серверную версию PHP, а выбранную в настройках пользователя.

Чтобы запустить скрипт через альтернативную версию, следует изменить команду php на полный путь до альтернативного интерпретатора. В случае с PHP 7.4 это будет /opt/php74/bin/php , то есть команда уже будет выглядеть так

Пример добавления задания на запуск скрипта раз в минуту с помощью альтернативной версии PHP 7.4:

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