我已经在我的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之间切换呢?


当前回答

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

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

下载脚本文件并运行

sh switch.sh

其他回答

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

禁用所选PHP版本…

Sudo a2dismod php5 Sudo服务apache2重启 用于启用其他PHP版本.... Sudo a2enmod php5.6 Sudo服务apache2重启

它会升级Php版本,如果你想降低版本,也一样,你可以通过PHP_INFO();

我不建议在php 5或7中使用a2enmod。我会使用update-alternatives。你可以使用sudo update-alternatives——config php来设置你想要使用的php系统版本。这使得您的命令行和apache版本工作相同。您可以在手册页上阅读有关更新选项的更多信息。

你可以使用这些开源的PHP Switch脚本,它们是专门为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
$ sudo update-alternatives --config php

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

选择合适的版本

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