在命令行ubuntu 16.04上切换php版本

时间:2017-03-06 06:55:42

标签: php apache command-line-interface php-5.6 php-7.1

我在我的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 6.6和php 7.1之间切换?

18 个答案:

答案 0 :(得分:121)

交互式切换模式

sudo update-alternatives --config php

手动切换

从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

命令行:

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

来自PHP 7.1 => PHP 5.6

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

的Apache:

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

命令行:

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

Source

答案 1 :(得分:37)

在你的shell中输入

$ sudo update-alternatives --config php

这就是你将得到的

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:

选择合适的版本

答案 2 :(得分:10)

我认为你应该试试这个

从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

答案 3 :(得分:9)

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

sudo update-alternatives --config php

或手动

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

答案 4 :(得分:6)

我实际上不建议在php 5或7中使用a2enmod。我会使用update-alternatives。您可以sudo update-alternatives --config php设置要使用的系统范围的PHP版本。这使您的命令行和apache版本的工作方式相同。您可以在man page上详细了解update-alternatives

答案 5 :(得分:6)

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)(构建时间:2021 年 3 月 5 日 07:54:13)(NTS) 版权所有 (c) PHP 集团 Zend Engine v4.0.3,版权所有 (c) Zend Technologies 使用 Zend OPcache v8.0.3,版权所有 (c),由 Zend Technologies 提供

<块引用>

PHP 7.4.16 (cli)(构建时间:2021 年 3 月 5 日 07:54:38)(NTS) 版权所有 (c) PHP 集团 Zend Engine v3.4.0,版权所有 (c) Zend Technologies 使用 Zend OPcache v7.4.16,版权所有 (c),由 Zend Technologies 提供

  1. 通过添加 /var/www/html/ 在可运行的本地环境中添加一个 PHP 文件,例如 phpinfo(); 路径,并在浏览器中获取 PHP 信息(在页面顶部可以查看 PHP 版本)

答案 6 :(得分:5)

您可以创建一个脚本以从版本切换:iter = ws.iter_rows # Start at row 2 for row_idx in range(2, ws.max_row): for col_idx,col in enumerate(iter(str(row_idx)), 1): for cell in col: npAvailability[row_idx, col_idx] = cell.value 然后键入:

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,其中参数为7或5.6

这就是你现在可以轻松地从PHP7切换到PHP 5.6!

答案 7 :(得分:5)

  

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

例如

我想将PHP Version7.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用于启用该版本

答案 8 :(得分:3)

在终端输入指定的命令..

禁用所选的PHP版本......

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

    • sudo a2enmod php5.6
    • sudo service apache2 restart
  2. 它会升级Php版本,如果你想要版本降级,反过来也是如此,你可以通过PHP_INFO()看到它;

答案 9 :(得分: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

答案 10 :(得分:3)

您可以使用这些专门为在Ubuntu 16.04 LTS中使用而设计的开源PHP Switch Scripts。

hotspot/src/share/vm/gc/shared/collectedHeap.inline.hpp

有一个setup.sh脚本可以安装PHP 5.6,7.0,7.1&amp;的所有必需依赖项。 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

答案 11 :(得分:2)

也许您的系统中可能有一个旧的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

来源:How do I install PHP in my computer

答案 12 :(得分:1)

从PHP 5.6 => PHP 7.1

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

对于旧版Linux

 $ sudo service apache2 restart

以获取最新版本

$ systemctl restart apache2

答案 13 :(得分:1)

我制作了一个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!"

答案 14 :(得分: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

答案 15 :(得分:0)

在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新博客,将正确进行

答案 16 :(得分:0)

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

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

下载脚本文件并运行

sh switch.sh

答案 17 :(得分:0)

这对我有用:-

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

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