我已经在我的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版本,比如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

其他回答

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

希望它能帮助到别人。

剧本如下: (保存在/usr/local/bin/sphp.sh,不要忘记用命令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!"

当在Ubuntu 18.04上安装laravel时,默认选择PHP 7.3.0RC3 install,但是laravel和symfony将无法正常安装,即使它们已经安装了,也会抱怨缺少PHP -xml和PHP -zip。你需要切换到php 7.1,使用上面的说明或,

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

现在,运行laravel的新博客,将正确进行

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

sudo update-alternatives --config php

或者手工操作

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

从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

请按以下步骤操作:

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