Я установил php 5.6 и php 7.1 на моем Ubuntu 16.04

Я знаю, что с Apache в качестве веб-сервера я могу

a2enmod php5.6 #to enable php5
a2enmod php7.1 #to enable php7

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

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

php -S localhost:8888

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

Ответы (18)

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

Можно создать скрипт для переключения с версий: sudo nano switch_php затем введите это:

#!/bin/sh
#!/bin/bash
echo "Switching to PHP$1..."
case $1 in
    "7")
        sudo a2dismod php5.6
        sudo a2enmod php7.0
        sudo service apache2 restart
        sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php;;
    "5.6")
        sudo a2dismod php7.0
        sudo a2enmod php5.6
        sudo service apache2 restart
        sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php;;
esac
echo "Current version: $( php -v | head -n 1 | cut -c-7 )"

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

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

That's it you can now easily switch form PHP7 to PHP 5.6!

Переключитесь с PHP 5.6 на PHP 7.2, используя:

sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart

Переключитесь с PHP 7.2 на PHP 5.6, используя:

sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart

Вы можете использовать эти сценарии переключения PHP с открытым исходным кодом, которые были разработаны специально для использования в Ubuntu 16.04 LTS.

https://github.com/rapidwebltd/php-switch-scripts

Существует сценарий setup.sh, который устанавливает все необходимые зависимости для PHP 5.6, 7.0, 7.1 и 7.2. После этого вы можете просто запустить один из следующих сценариев переключения, чтобы изменить версию модуля PHP CLI и Apache 2.

./switch-to-php-5.6.sh
./switch-to-php-7.0.sh
./switch-to-php-7.1.sh
./switch-to-php-7.2.sh

Начиная с PHP 5.6 => PHP 7.1

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1

для старых версий Linux

 $ sudo service apache2 restart

для более свежей версии

$ systemctl restart apache2

Введите данную команду в свой терминал ..

Для отключения выбранной версии PHP ...

    • sudo a2dismod php5
    • перезапуск службы sudo apache2
  1. Для включения другой версии PHP ....

    • sudo a2enmod php5.6
    • перезапуск службы sudo apache2

Он обновит версию Php, то же самое в обратном порядке, если вы хотите понизить версию, вы можете увидеть это с помощью PHP_INFO ();

это сработало для меня: -

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

просто измените версию PHP на ту версию, которая вам нужна, я изменил ее на php7.4

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

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

Переход с PHP 5.6 => PHP 7.2

Apache: -

sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart

Командная строка: -

sudo update-alternatives --set php /usr/bin/php7.2
sudo update-alternatives --set phar /usr/bin/phar7.2
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2
sudo update-alternatives --set phpize /usr/bin/phpize7.2
sudo update-alternatives --set php-config /usr/bin/php-config7.2

И наоборот, переключиться с PHP 7.2 => PHP 5.6

Apache: -

sudo a2dismod php7.2
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

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

DOWNGRADE PHP 8.0 до PHP 7.4

sudo a2dismod php8.0
sudo a2enmod php7.4
sudo service apache2 перезапуск
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 перезапуск

UPGRADE PHP 7.4 to PHP 8.0

sudo a2dismod php7.4
sudo a2enmod php8.0
sudo service apache2 перезапуск
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 перезапуск

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

  1. запустите в консоли php -v и получите:

PHP 8.0.3 (cli) (built: Mar 5 2021 07:54:13) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.3, Copyright (c) Zend Technologies with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies

OR

PHP 7.4.16 (cli) (built: Mar 5 2021 07:54:38) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.16, Copyright (c), by Zend Technologies

  1. add a PHP file in your runnable local environment like /var/www/html/ path by adding phpinfo(); and get PHP info in the browser (in top of the page the version of PHP is available to see)

, пожалуйста, следуйте инструкциям:

i.e : your current version is : current_version = 7.3 , and you want to change it to : new_version = 7.2

1) sudo a2dismod php(current_version) 
2) sudo a2enmod php(new_version)
3) sudo update-alternatives --config php (here you need to select php version number) 
4) restart apache through : 
  sudo /etc/init.d/apache2 restart OR
  sudo service apache2 restart

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

sudo update-alternatives --config php

или вручную

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable

При установке laravel на Ubuntu 18.04, по умолчанию выбрана установка PHP 7.3.0RC3, но laravel и symfony не будут установлены должным образом, жалуясь на отсутствие php-xml и php-zip, даже если они установлены. Вам необходимо перейти на php 7.1, используя приведенные выше инструкции или,

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

теперь, запуск нового блога laravel, будет работать правильно

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

С php5.6 на php7.1

sudo a2dismod php5.6
sudo a2enmod php7.1
sudo service apache2 restart

sudo update-alternatives --set php /usr/bin/php7.1
sudo update-alternatives --set phar /usr/bin/phar7.1
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1

С php7.1 на php5.6

sudo a2dismod php7.1
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

Вы можете использовать приведенный ниже скрипт, чтобы легко переключаться между версиями PHP. Я также включил конфигурацию phpize.

https://github.com/anilkumararumulla/switch-php-version

Скачайте файл скрипта и запустите

sh switch.sh
$ sudo update-alternatives --config php

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

Это то, что вы должны увидеть в ответе

There are 4 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.0   70        manual mode
  3            /usr/bin/php7.1   71        manual mode
  4            /usr/bin/php7.2   72        manual mode
Press  to keep the current choice[*], or type selection number:

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

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

Например,

Я хочу переключить версию PHP с 7.1 на 7.2 мы можем использовать команду ниже

sudo a2dismod php7.1 &&  sudo update-alternatives --set php /usr/bin/php7.2 && sudo a2enmod php7.2 && sudo service apache2 restart

a2dismod используется для отключения текущей версии php, а a2enmod используется для включения версии

Я сделал bash-скрипт для переключения между разными версиями PHP в Ubuntu.

Надеюсь, это кому-то поможет.

Вот сценарий: (сохраните его в /usr/local/bin/sphp.sh, не забудьте добавить флаг + x с помощью команды: sudo chmod + x /usr/local/bin/sphp.sh)

#! / Bin / bash

# Использование
если [$ # -ne 1]; тогда
  echo "Использование: sphp [phpversion]"
  echo "Пример: sphp 7.2"
  выход 1
фи

currentversion = "` php -r \ "error_reporting (0); echo str_replace ('.', '', substr (phpversion (), 0, 3)); \ "` "
newversion = "$ 1"

majorOld = $ {currentversion: 0: 1}
minorOld = $ {текущая версия: 1: 1}
majorNew = $ {newversion: 0: 1}
minorNew = $ {новая версия: 2: 1}

если [$? -экв 0]; тогда
  если ["$ {новая версия}" == "$ {текущая версия}"]; тогда
    echo "Версия PHP [$ {newversion}] уже используется"
    выход 1
  фи

  echo "Обнаружена версия PHP [$ newversion]"
  echo "Переход с [php $ {currentversion}] на [php $ {newversion}] ..."

  printf "a2dismod php $ majorOld. $ minorOld ..."
  sudo a2dismod "php $ {majorOld}. $ {minorOld}"
  printf "[ОК] и"

  printf "a2enmod php $ {newversion} ..."
  sudo a2enmod "php $ {majorNew}. $ {minorNew}"
  printf "[ОК] \ n"

  printf "альтернативы-обновления ..."
  sudo update-alternatives --set php "/usr/bin/php${majorNew}.${minorNew}"
  printf "[ОК] \ n"

  sudo service apache2 перезапуск
  printf "[OK] apache2 перезапущен \ n"
еще
  echo "Версия PHP $ majorNew. $ minorNew не найдена."
  echo "Сначала попробуйте \` sudo apt install php @ $ {newversion} \ `."
  выход 1
фи

эхо «СДЕЛАНО!»

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

sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar

Ручное переключение

Начиная с PHP 5.6 => PHP 7.1

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

Apache:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart

Command Line:

$ sudo update-alternatives --set php /usr/bin/php7.1
$ sudo update-alternatives --set phar /usr/bin/phar7.1
$ sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1

From PHP 7.1 => PHP 5.6

Default PHP 7.1 is set on your system and you need to switch to PHP 5.6.

Apache:

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart

Command Line:

$ sudo update-alternatives --set php /usr/bin/php5.6

Source

2022 WebDevInsider