Debian поменять версию php

How to Switch between Multiple PHP Version on Debian 11/10

On your system, if you have installed multiple versions of PHP (eg PHP 8.1, 8.0, 7.4, 7.3, 7.2, 7.1 and 5.6). PHP 7.2 is running as default PHP for Apache and CLI. For any requirement, you need to use PHP 5.6. Then you don’t need to remove PHP 7.2. You can simply switch your PHP version to default used for Apache and command line.

We assume you have installed multiple PHP version on your Debian system. Now you need to switch the active PHP version for CLI and Apache2. This tutorial will help you to switch between multiple PHP versions for Apache server and CLI on Debian.

We have installed PHP 8.1, PHP 7.4 and PHP 5.6 on our Debian system. You can use the same for other PHP versions by changes commands accordingly.

Enable PHP 8.1 as Default Version

You need to set PHP 8.1 as your active PHP version for CLI and Apache2 both. You can do this by disabling Apache2 modules for all other installed PHP versions and configure CLI using the update-alternatives command.

    For Apache:-
    Run the following command to disable Apache module for other PHP versions.

sudo a2dismod php7.4 php5.6 
sudo a2enmod php8.1 sudo service apache2 restart 
sudo update-alternatives --set php /usr/bin/php8.1 sudo update-alternatives --set phar /usr/bin/phar8.1 sudo update-alternatives --set phar.phar /usr/bin/phar.phar8.1 sudo update-alternatives --set phpize /usr/bin/phpize8.1 sudo update-alternatives --set php-config /usr/bin/php-config8.1 

Note – The phpize8.1 and php-config8.1 command is available in php8.1-dev package. This is more useful for compiling PHP modules using pecl.

Enable PHP 7.4 as Default Version

You need to set PHP 7.4 as your active PHP version for CLI and Apache2 both. You can do this by disabling Apache2 modules for all other installed PHP versions and configure CLI using the update-alternatives command.

    Apache:-
    Run the following commands to disable Apache module for other PHP versions

sudo a2dismod php8.1 php5.6 
sudo a2enmod php7.4 sudo service apache2 restart 
sudo update-alternatives --set php /usr/bin/php7.4 sudo update-alternatives --set phar /usr/bin/phar7.4 sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4 sudo update-alternatives --set phpize /usr/bin/phpize7.4 sudo update-alternatives --set php-config /usr/bin/php-config7.4 

Note – The phpize7.4 and php-config7.4 command is available in php7.4-dev package. This is more useful for compiling PHP modules using pecl.

Enable PHP 5.6 as Default Version

The developers of PHP are no longer supporting PHP 5.6. It is strongly recommended to upgrade to higher PHP version like 7.4 or 8.1. But still you can install and Use php 5.6 on your Debian system if your application required PHP 5.6. Let’s set PHP 5.6 as your default version for CLI and Apache2 both.

Читайте также:  Javascript promise then catch

    Apache:-
    Run the following commands to disable other PHP versions like (php 8.1, php7.4 etc) for Apache and command line.

sudo a2dismod php7.4 php8.1 php8.0 
sudo a2enmod php5.6 sudo service apache2 restart 
sudo update-alternatives --set php /usr/bin/php5.6 sudo update-alternatives --set phar /usr/bin/phar5.6 sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6 sudo update-alternatives --set phpize /usr/bin/phpize5.6 sudo update-alternatives --set php-config /usr/bin/php-config5.6 

Note – The phpize5.6 and php-config5.6 command is available in php5.6-dev package. This is more useful for compiling PHP modules using pecl.

Conclusion

In this tutorial, you have learned about switching PHP versions on Debian system. You can change the default PHP version without uninstalling the other versions.

Источник

Жонглируем версиями PHP в системе

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

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

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

# php -v PHP 5.4.16 (cli) (built: May 12 2016 13:45:17) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v5.0.12, Copyright (c) 2002-2015, by ionCube Ltd.

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

# rpm -qa | grep plesk-php.*-release plesk-php56-release-5.6.22-centos7.16052711.x86_64 plesk-php70-release-7.0.7-centos7.16052710.x86_64

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

# /opt/plesk/php/5.6/bin/php -v PHP 5.6.22 (cli) (built: May 27 2016 11:45:28) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v5.0.18, Copyright (c) 2002-2015, by ionCube Ltd. with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

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

Читайте также:  Python interface x plane 11

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

# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

В ней перечислен список директорий, в которых ищутся программы по имени. Главный нюанс — поиск в директориях происходит последовательно и используется первый найденный результат. Текущий путь до текущего бинарника 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 с помощью этой команды:

# update-alternatives --install /usr/local/bin/php php /opt/plesk/php/5.6/bin/php 10 # update-alternatives --install /usr/local/bin/php php /opt/plesk/php/7.0/bin/php 20 # update-alternatives --install /usr/local/bin/php php /usr/bin/php 30

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

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

# update-alternatives --list | grep php php auto /usr/bin/php # update-alternatives --display php php - status is auto. link currently points to /usr/bin/php /opt/plesk/php/5.6/bin/php - priority 10 /opt/plesk/php/7.0/bin/php - priority 20 /usr/bin/php - priority 30 Current `best' version is /usr/bin/php.

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

# which php /usr/local/bin/php # ls -l /usr/local/bin/php lrwxrwxrwx. 1 root root 21 Jul 2 10:03 /usr/local/bin/php -> /etc/alternatives/php # ls -l /etc/alternatives/php lrwxrwxrwx. 1 root root 26 Jul 2 10:03 /etc/alternatives/php -> /usr/bin/php

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

# php -v PHP 5.4.16 (cli) (built: May 12 2016 13:45:17) . 

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

Читайте также:  Статьи на тему php

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

# update-alternatives --config php There are 3 programs which provide 'php'. Selection Command ----------------------------------------------- 1 /opt/plesk/php/5.6/bin/php 2 /opt/plesk/php/7.0/bin/php *+ 3 /usr/bin/php Enter to keep the current selection[+], or type selection number: 1

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

# php -v PHP 5.6.22 (cli) (built: May 27 2016 11:45:28) … # update-alternatives --display php php - status is manual. link currently points to /opt/plesk/php/5.6/bin/php … 

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

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

P.S. Приглашаю пофлеймить про phpenv в комментарии 🙂

Источник

Как изменить версию PHP на сервере с Debian 10

Статья будет полезна владельцам серверов с Debian 10, которым требуется установить устаревшую версию PHP 5.6. По умолчанию с Debian 10 устанавливается PHP версии 7.3 и эта версия подходит не для всех сайтов.

Как посмотреть версию php

Посмотрим, какая сейчас версия PHP установлена на сервере:

dpkg -l | awk | grep ^php4.4$ php7.3

В нашем случае установлен PHP 7.3.

Переключить версию php

Чтобы сменить версию php потребуется выполнить следующие команды:

apt-get install apt-transport-https lsb-release ca-certificates 
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 

Добавьте новый репозиторий в настройки apt:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list 

Обновите список пакетов и потом установите PHP5.6:

apt-get update apt-get install php5.6 

Почти готово. Вот как изменить версию php на хостинге:

update-alternatives --config php 
---------------------------------------------------------- * 0 /usr/bin/php7.0 70 mode automatique 1 /usr/bin/php5.6 56 mode manuel 2 /usr/bin/php7.0 70 mode manuel 

Чтобы переключиться на PHP 5.6 нажмите на клавиатуре 1 и далее Enter. Готово!

Рекомендуемые статьи:

  • PhpMyAdmin — как создать пользователя и базу данных
  • WordPress — как отключить управление сайтом через xmlrpc
  • Несколько причин медленной работы сайта на примере WordPress
  • WordPress — смена домена сайта при помощи wp-cli
  • Когда использовать index.php, а когда index.html
  • PHP. Как удалить элемент из массива
  • Дата и время в PHP
  • PHP. Различия между Fast-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM
  • Простой пример кода на языке PHP
  • PHP. Проверка содержит ли строка определенное слово
  • Как предотвратить SQL инъекции в PHP
  • Как установить Linux, Apache, MySQL, PHP (LAMP) в Ubuntu 18.04
  • Как настроить отображение ошибок в PHP
  • Несколько трюков и секретов PHP

Источник

Оцените статью