在命令行中切换Ubuntu 16.04上的PHP版本

274

我已经在我的Ubuntu 16.04上安装了PHP 5.6和PHP 7.1。

我知道如果我的web服务器是Apache,我可以做到:

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

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

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

php -S localhost:8888

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


http://askubuntu.com/questions/705880/how-to-install-php-7 - Aman Kumar
19个回答

4

在命令行Ubuntu中,有两种方法可以切换php版本。

逐个运行以下命令,并输入您想要更改的php版本号码。

方法1

sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart

方法2

如果你想将PHP 5.6更改为7.4,只需运行以下代码。

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

如果您想从PHP 7.4更改为5.6,请运行以下代码。

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

更多信息请点击此链接https://slaford.com/laravel/how-to-switch-php-versions-on-command-line-ubuntu/


这个回答没有为已有的内容增添任何东西。此外,这是一个六年前的问题;你在回答中提到的 PHP 版本都已经过时且不再受支持。 - miken32

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

3
我写了一个bash脚本,在Ubuntu上切换不同的PHP版本。
希望对某些人有所帮助。
下面是脚本: (将其保存在/usr/local/bin/sphp.sh中,不要忘记使用命令sudo chmod +x /usr/local/bin/sphp.sh添加+x标志)

#!/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!"


3

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

禁用所选PHP版本...

    • sudo a2dismod php5
    • sudo service apache2 restart
  1. 启用其他PHP版本....

    • sudo a2enmod php5.6
    • sudo service apache2 restart

它将升级Php版本,如果您想要降级版本,可以通过PHP_INFO()查看。


2
您可以使用这些开源的PHP切换脚本,它们专门为Ubuntu 16.04 LTS设计。其中包括一个名为setup.sh的脚本,可安装PHP 5.6、7.0、7.1和7.2所需的所有依赖项。完成后,您只需运行以下任一切换脚本即可更改PHP CLI和Apache 2模块版本。 https://github.com/rapidwebltd/php-switch-scripts
./switch-to-php-5.6.sh
./switch-to-php-7.0.sh
./switch-to-php-7.1.sh
./switch-to-php-7.2.sh

1
在Ubuntu 18.04上安装Laravel时,默认选择安装PHP 7.3.0RC3,但是Laravel和Symfony无法正常安装,会抱怨缺少php-xml和php-zip,即使它们已经安装。您需要切换到PHP 7.1,使用上面的说明或者其他方法。
 sudo update-alternatives --set php /usr/bin/php7.1

现在,运行laravel new blog命令,将会顺利进行。


1

1

从 PHP 5.6 => PHP 7.1

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

对于旧的Linux版本

 $ sudo service apache2 restart

获取更近期的版本,请查看以下内容:

$ systemctl restart apache2

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接