206

我在我的 Ubuntu 16.04 上安装了 php 5.6 和 php 7.1

我知道使用 Apache 作为我的网络服务器,我可以做到

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

当我在 Apache 模块中禁用 php7.1 并启用 php 5.6 时,Apache 会识别更改并按预期使用 php 5.6 解释器。

但是当我从命令行运行内部 php web 服务器时:

php -S localhost:8888

php 使用 php 7 处理请求。那么如何在命令行中在 php 5.6 和 php 7.1 之间切换?

4

18 回答 18

425

交互切换模式

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。

阿帕奇:

$ 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

从 PHP 7.1 => PHP 5.6

您的系统上设置了默认 PHP 7.1,您需要切换到 PHP 5.6。

阿帕奇:

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

命令行:

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

资源

于 2017-03-06T07:03:19.470 回答
283
$ sudo update-alternatives --config php

应该适用于16.04之后的所有 ubuntu 版本(18.0420.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 <enter> to keep the current choice[*], or type selection number:

选择合适的版本

于 2018-01-19T08:28:20.690 回答
26

列出所有可用版本并从中选择:

sudo update-alternatives --config php

或者手动做

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable
于 2018-05-30T11:25:16.913 回答
18

我认为你应该试试这个

从 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
于 2017-09-19T09:38:43.323 回答
17

我实际上不建议使用a2enmodphp 5 或 7。我会使用update-alternatives. 您可以sudo update-alternatives --config php设置要使用的系统范围的 PHP 版本。这使您的命令行和 apache 版本的工作方式相同。update-alternatives您可以在手册页上阅读更多信息。

于 2017-03-06T07:02:50.917 回答
16

在和版本ubuntu 20.04之间切换:PHP 8.0PHP 7.4

降级 PHP 8.0PHP 7.4

sudo a2dismod php8.0
sudo a2enmod php7.4
sudo service apache2 restart
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

升级 PHP 7.4PHP 8.0

sudo a2dismod php7.4
sudo a2enmod php8.0
sudo service apache2 restart
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

检查更改:

  1. php -v在控制台中运行,你会得到:

PHP 8.0.3 (cli) (built: Mar 5 2021 07:54:13) (NTS) 版权所有 (c) The PHP Group Zend Engine v4.0.3, 版权所有 (c) Zend Technologies with Zend OPcache v8.0.3, 版权所有 ( c),由 Zend Technologies 提供

或者

PHP 7.4.16 (cli) (built: Mar 5 2021 07:54:38) (NTS) 版权所有 (c) The PHP Group Zend Engine v3.4.0, 版权所有 (c) Zend Technologies with Zend OPcache v7.4.16, 版权所有 ( c),由 Zend Technologies 提供

  1. 通过在浏览器中添加和获取 PHP 信息,在可运行的本地环境(如/var/www/html/路径)中添加 PHP 文件phpinfo();(在页面顶部,可以查看 PHP 的版本)
于 2021-03-22T10:03:40.050 回答
12

您可以创建一个脚本以从版本切换: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 的位置

就是这样,您现在可以轻松地将 PHP7 切换到 PHP 5.6!

于 2017-07-22T18:38:37.133 回答
10

可能您的系统中可能有一个旧的 PHP 版本,例如 PHP 5.6,并且您也安装了 PHP 7.2,因此您的机器中有多个 PHP。有一些应用程序是在较旧的 PHP 5.6 是最新版本时开发的,它们仍然存在并且您正在开发这些应用程序,您可能同时在 Laravel 上工作,但 Laravel 需要 PHP 7+ 才能开始。得到图片?

在这种情况下,您可以在 PHP 版本之间切换以满足您的要求。

从 PHP 5.6 切换 => PHP 7.2

阿帕奇:-

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

阿帕奇:-

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
于 2019-08-18T06:30:07.593 回答
8

您可以使用以下命令行在两个 PHP 版本之间切换。

例如

我想切换到PHP Version我们可以使用下面的命令7.17.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用于启用版本

于 2019-02-14T05:12:05.590 回答
5

这对我有用:-

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

只需将 PHP 版本更改为您需要的任何版本我已将其更改为 php7.4

于 2021-04-29T01:13:31.873 回答
3

在终端中输入给定的命令..

要禁用选定的 PHP 版本...

    • 须藤a2dismod php5
    • sudo 服务 apache2 重启
  1. 启用其他 PHP 版本....

    • 须藤a2enmod php5.6
    • sudo 服务 apache2 重启

它将升级PHP版本,如果你想降级,同样的事情,你可以通过PHP_INFO()看到它;

于 2018-01-24T13:02:42.067 回答
3

使用以下命令从 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
于 2018-03-07T17:48:25.067 回答
2

我制作了一个 bash 脚本来在 Ubuntu 上的不同 PHP 版本之间切换。

希望它可以帮助某人。

这是脚本:(将其保存在 /usr/local/bin/sphp.sh 中,不要忘记使用命令添加 +x 标志:sudo chmod +x /usr/local/bin/sphp.sh)

#!/bin/bash

# Usage
if [ $# -ne 1 ]; then
  echo "Usage: sphp [phpversion]"
  echo "Example: sphp 7.2"
  exit 1
fi

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

majorOld=${currentversion:0:1}
minorOld=${currentversion:1:1}
majorNew=${newversion:0:1}
minorNew=${newversion:2:1}

if [ $? -eq 0 ]; then
  if [ "${newversion}" == "${currentversion}" ]; then
    echo "PHP version [${newversion}] is already being used"
    exit 1
  fi

  echo "PHP version [$newversion] found"
  echo "Switching from [php${currentversion}] to [php${newversion}] ... "

  printf "a2dismod php$majorOld.$minorOld ... "
  sudo a2dismod "php${majorOld}.${minorOld}"
  printf "[OK] and "

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

  printf "update-alternatives ... "
  sudo update-alternatives --set php "/usr/bin/php${majorNew}.${minorNew}"
  printf "[OK]\n"

  sudo service apache2 restart
  printf "[OK] apache2 restarted\n"
else
  echo "PHP version $majorNew.$minorNew was not found."
  echo "Try \`sudo apt install php@${newversion}\` first."
  exit 1
fi

echo "DONE!"

于 2020-02-10T22:42:28.253 回答
2

您可以使用这些专为在 Ubuntu 16.04 LTS 中使用而设计的开源 PHP 切换脚本。

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
于 2018-03-15T17:03:00.440 回答
1

When installing laravel on Ubuntu 18.04, be default PHP 7.3.0RC3 install selected, but laravel and symfony will not install properly complaining about missin php-xml and php-zip, even though they are installed. You need to switch to php 7.1, using the instructions above or,

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

now, running laravel new blog, will proceed correctly

于 2018-10-22T20:36:23.613 回答
1

请按照以下步骤操作:

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
于 2020-01-09T12:51:59.810 回答
1

您可以使用下面的脚本轻松地在 PHP 版本之间切换,我也包含了 phpize 配置。

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

下载脚本文件并运行

sh switch.sh
于 2018-10-08T14:01:23.587 回答
1

从 PHP 5.6 => PHP 7.1

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

对于旧的 linux 版本

 $ sudo service apache2 restart

对于更新的版本

$ systemctl restart apache2
于 2018-09-24T14:42:06.117 回答