Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在命令行ubuntu 16.04上切换php版本_Php_Apache_Command Line Interface_Php 5.6_Php 7.1 - Fatal编程技术网

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

在命令行ubuntu 16.04上切换php版本,php,apache,command-line-interface,php-5.6,php-7.1,Php,Apache,Command Line Interface,Php 5.6,Php 7.1,我已经在我的Ubuntu 16.04上安装了PHP5.6和PHP7.1 我知道使用Apache作为我的web服务器,我可以做到 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使用PHP7处理请求。

我已经在我的Ubuntu 16.04上安装了PHP5.6和PHP7.1

我知道使用Apache作为我的web服务器,我可以做到

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使用PHP7处理请求。那么如何在命令行中在PHP5.6和PHP7.1之间切换呢?

我实际上不建议对PHP5或PHP7使用
a2enmod
。我会使用
更新备选方案
。您可以执行
sudo update alternations--config php
来设置要使用的系统范围内的php版本。这使得命令行和apache版本的工作方式相同。您可以在.

交互式切换模式上阅读更多关于
更新备选方案的信息
手动切换
从PHP5.6=>PHP7.1
系统上设置了默认的PHP5.6,您需要切换到PHP7.1

阿帕奇:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart
$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ 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
$ sudo update-alternatives --set php /usr/bin/php5.6
从PHP7.1=>PHP5.6 系统上设置了默认的PHP7.1,您需要切换到PHP5.6

阿帕奇:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart
$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ 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
$ sudo update-alternatives --set php /usr/bin/php5.6

您可以创建一个脚本来切换版本:
sudo nano-switch\u 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开关\u php

要执行脚本,只需键入
/switch\u php[VERSION\u NUMBER]
,其中参数为7或5.6


就这样,您现在可以轻松地从PHP7切换到PHP5.6

我想你应该试试这个

从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

在你的命令行中输入这个,应该适用于16.04、18.04和20.04之间的所有ubuntu

$ 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:
备选php有4种选择(提供/usr/bin/php)。
选择路径优先级状态
------------------------------------------------------------
*0/usr/bin/php7.2 72自动模式
1/usr/bin/php5.6 56手动模式
2/usr/bin/php7.0 70手动模式
3/usr/bin/php7.1 71手动模式
4/usr/bin/php7.2 72手动模式
按可保留当前选项[*],或类型选择编号:

选择适当的版本

在终端中键入给定命令

对于禁用选定的PHP版本

    • sudo a2dismod php5
    • sudo服务apache2重启
  • 对于启用其他PHP版本

    • sudo a2enmod php5.6
    • sudo服务apache2重启

  • 它将升级Php版本,同样的事情反过来如果你想要版本降级,你可以通过Php_INFO()看到它

    使用以下命令从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
    

    您可以使用这些开源PHP切换脚本,它们是专门为Ubuntu 16.04 LTS设计的

    有一个
    setup.sh
    脚本,用于安装PHP5.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
    
    或者手动操作

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

    从PHP5.6=>PHP7.1

    $ sudo a2dismod php5.6
    $ sudo a2enmod php7.1
    
    对于旧linux版本

     $ sudo service apache2 restart
    
    有关最新版本

    $ systemctl restart apache2
    

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

    下载脚本文件并运行

    sh switch.sh
    

    在Ubuntu18.04上安装laravel时,请选择默认的PHP7.3.0RC3安装,但laravel和symfony不会正确安装,即使安装了PHP xml和PHPzip,也会抱怨缺少PHP xml和PHPzip。您需要切换到PHP7.1,使用上述说明或

     sudo update-alternatives --set php /usr/bin/php7.1
    
    现在,运行laravel新博客,将正确进行

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

    例如

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

    可能您的系统中有一个像PHP5.6这样的旧php版本,并且您也安装了PHP7.2,因此您的计算机中有多个php。有一些应用程序是在旧版PHP5.6是最新版本时开发的,它们仍然是活动的,您正在使用这些应用程序,您可能同时使用Laravel,但Laravel需要PHP7+才能开始使用。明白了吗

    在这种情况下,您可以根据需要在PHP版本之间切换

    从PHP5.6=>PHP7.2切换

    阿帕奇:-

    sudo a2dismod php5.6
    sudo a2enmod php7.2
    sudo service apache2 restart
    
    sudo a2dismod php7.2
    sudo a2enmod php5.6
    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
    
    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
    
    反之亦然,从PHP7.2=>PHP5.6切换

    阿帕奇:-

    sudo a2dismod php5.6
    sudo a2enmod php7.2
    sudo service apache2 restart
    
    sudo a2dismod php7.2
    sudo a2enmod php5.6
    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
    
    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
    

    请按照以下步骤操作:

    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
    

    我制作了一个bash脚本来在Ubuntu上的不同PHP版本之间切换

    希望它能帮助别人

    以下是脚本: (将其保存在/usr/local/bin/sphp.sh中,不要忘记使用命令sudo chmod+x/usr/local/bin/sphp.sh添加+x标志)

    #/bin/bash
    #用法
    如果[$#-ne 1];然后
    echo“用法:sphp[phpversion]”
    echo“示例:sphp 7.2”
    出口1
    fi
    currentversion=“`php-r\”错误报告(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}
    如果[$?-等式0];然后
    如果[“${newversion}”==“${currentversion}”];然后
    echo“PHP版本[${newversion}]已在使用”
    出口1
    fi
    echo“找到PHP版本[$newversion]
    echo“从[php${currentversion}]切换到[php${newversion}…”
    printf“a2dismod php$majorOld.$minorOld