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

sal*_*aid 52 php apache command-line-interface php-5.6 php-7.1

我在我的ubuntu 16.04上安装了php 5.6和php7.1

我知道用apache作为我的网络服务器,我能做到

a2enmod php5.6 #to enable php5
a2enmod php7.1 #to enable php7
Run Code Online (Sandbox Code Playgroud)

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

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

php -S localhost:8888
Run Code Online (Sandbox Code Playgroud)

php使用php7处理请求,如何在命令行中切换php6.6和php7.1?

Ste*_*e G 149

交互式切换模式

sudo update-alternatives --config php

手动切换

从PHP 5.6 => PHP 7.1

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

阿帕奇:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

命令行:

$ sudo update-alternatives --set php /usr/bin/php7.1
Run Code Online (Sandbox Code Playgroud)

从PHP 7.1 => PHP 5.6

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

阿帕奇:

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

命令行:

$ sudo update-alternatives --set php /usr/bin/php5.6
Run Code Online (Sandbox Code Playgroud)

资源

  • sudo update-alternatives --set php /usr/bin/php5.6 这个命令节省了我的时间..谢谢@StevieG (4认同)
  • 在 Ubuntu 18.04 中,我必须执行一些额外的步骤来禁用其他版本,否则进程将继续运行。# systemctl 停止 php5.6-fpm | # systemctl 禁用 php5.6-fpm | 要获取 php 进程列表,请执行 # ps -ax | grep php (3认同)

Gio*_*osK 46

在你的shell中键入它

$ sudo update-alternatives --config php
Run Code Online (Sandbox Code Playgroud)

这就是你将得到的

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:
Run Code Online (Sandbox Code Playgroud)

选择合适的版本

  • 这个应该是答案 (4认同)
  • @SandOfVega 第 0 条路径始终是当前选择的路径。然后从第一个开始,它们都会显示出来,包括所选的一个。注意:如果您没有安装多个 PHP,此命令会提醒您没有其他选择,并且您不会看到上面显示的表格。 (3认同)
  • 为什么php7.2两次? (2认同)
  • @burzum 在 Ubuntu 20.04 上运行良好。 (2认同)

小智 13

这对我有用:-

sudo update-alternatives --set php /usr/bin/php7.4
Run Code Online (Sandbox Code Playgroud)

只需将PHP版本更改为您需要的版本即可,我已将其更改为php7.4


Rup*_*hal 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
Run Code Online (Sandbox Code Playgroud)

从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
Run Code Online (Sandbox Code Playgroud)


小智 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
Run Code Online (Sandbox Code Playgroud)

命令行:-

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
Run Code Online (Sandbox Code Playgroud)

反之亦然,从 PHP 7.2 切换 => PHP 5.6

阿帕奇:-

sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

命令行:-

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
Run Code Online (Sandbox Code Playgroud)


Kam*_*mar 9

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

sudo update-alternatives --config php
Run Code Online (Sandbox Code Playgroud)

或者手动完成

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable
Run Code Online (Sandbox Code Playgroud)


Pej*_*yri 9

在和版本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
Run Code Online (Sandbox Code Playgroud)

升级 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
Run Code Online (Sandbox Code Playgroud)

检查更改:

  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. /var/www/html/通过phpinfo();在浏览器中添加和获取 PHP 信息,在可运行的本地环境中添加一个 PHP 文件,如路径(在页面顶部可以查看 PHP 版本)


Fat*_*XPC 6

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

  • 这对我不起作用。即使在我尝试选择之后,PHPINFO 仍然显示始终相同的版本。 (4认同)

小智 6

您可以创建一个脚本以从版本切换: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 )"
Run Code Online (Sandbox Code Playgroud)

退出并保存使其可执行: sudo chmod +x switch_php

要执行脚本,只需./switch_php [VERSION_NUMBER]在参数为7或5.6的地方键入

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


Ash*_*iya 6

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

例如

我想改用PHP Version7.17.2我们可以使用下面的命令

sudo a2dismod php7.1 &&  sudo update-alternatives --set php /usr/bin/php7.2 && sudo a2enmod php7.2 && sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

a2dismod用于禁用当前的php版本,并a2enmod用于启用该版本


Man*_*ana 5

ubuntu命令行切换php版本有两种方法。

逐条运行每条命令,输入要更改的php版本号。

方法一

sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

方法二

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

sudo a2dismod php5.6
sudo a2enmod php7.4
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

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

sudo a2dismod php7.4
sudo a2enmod php5.6
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

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