关键词:
【中文标题】在命令行 ubuntu 16.04 上切换 php 版本【英文标题】:Switch php versions on commandline ubuntu 16.04 【发布时间】:2020-05-27 04:15:09 【问题描述】:我已经在我的 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之间切换呢?
【问题讨论】:
askubuntu.com/questions/705880/how-to-install-php-7 【参考方案1】:我实际上不建议将a2enmod
用于php 5 或7。我会使用update-alternatives
。您可以使用sudo update-alternatives --config php
来设置要使用的系统范围的 PHP 版本。这使您的命令行和 apache 版本的工作方式相同。您可以在man page 上阅读有关update-alternatives
的更多信息。
【讨论】:
这对我不起作用。即使在我尝试选择之后,PHPINFO 仍然显示始终相同的版本。【参考方案2】:交互切换模式
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
手动切换
从 PHP 5.6 => PHP 7.1
您的系统已设置默认 PHP 5.6,您需要切换到 PHP 7.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
从 PHP 7.1 => PHP 5.6
您的系统已设置默认 PHP 7.1,您需要切换到 PHP 5.6。
阿帕奇:
$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart
命令行:
$ sudo update-alternatives --set php /usr/bin/php5.6
Source
【讨论】:
sudo update-alternatives --set php /usr/bin/php5.6 这个命令节省了我的时间。谢谢@StevieG 你是最好的兄弟...非常感谢。 我在 apache2 重新启动时出现分段错误。然后我发现我一次启用了多个 PHP 版本。在启用 5.6 之前,我必须禁用 7.1 和 7.2。 确实,我刚刚使用此解决方案将php -v
从 7.2 更改为 7.1!它很棒而且很简单。
在 Ubuntu 18.04 中,我必须执行一些额外的步骤来禁用其他版本或进程将继续运行。 # systemctl stop php5.6-fpm | # systemctl 禁用 php5.6-fpm |要获取 php 进程列表,请执行 # ps -ax | grep php【参考方案3】:
您可以创建一个脚本来切换版本: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
要执行脚本,只需键入./switch_php [VERSION_NUMBER]
,其中参数为 7 或 5.6
就是这样,您现在可以轻松地从 PHP7 切换到 PHP 5.6!
【讨论】:
看起来很有希望,但是当您使用 "ln -sfn ..." 时,'n' 标志在 ln 命令中的作用。我无法在文档中的任何地方找到该标志(“n”)。 @FakharAnwarman ln
: -n, --no-dereference : treat LINK_NAME as a normal file if it is a symbolic link to a directory
【参考方案4】:
我觉得你应该试试这个
从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
【讨论】:
为您的答案提供足够的解释,以了解此代码为何有效及其含义。因此该答案对遇到相同问题的用户有用。查看链接了解如何写出好的答案。【参考方案5】:$ sudo update-alternatives --config php
应该适用于 16.04(18.04 和 20.04)之后的所有 ubuntu 版本
这是您应该看到的响应
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:
选择合适的版本
【讨论】:
这个应该是答案 为什么是php7.2两次? @SandOfVega 这是命令的输出,如果它是我猜的默认值,可能会显示 2 次,但您的输出可能会有所不同。 Ubuntu 20.04 给了我“错误:php 没有替代品” @burzum 在 Ubuntu 20.04 上运行良好。【参考方案6】:在终端中输入给定的命令..
用于禁用选定的 PHP 版本...
-
sudo a2dismod php5
sudo service apache2 重启
用于启用其他 PHP 版本....
sudo a2enmod php5.6 sudo service apache2 restart它会升级php版本,如果你想版本降级,同样的事情,你可以通过PHP_INFO()看到它;
【讨论】:
【参考方案7】:使用以下命令从 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
【讨论】:
【参考方案8】:您可以使用这些专为在 Ubuntu 16.04 LTS 中使用而设计的开源 PHP 切换脚本。
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
【讨论】:
【参考方案9】:列出所有可用版本并从中选择:
sudo update-alternatives --config php
或者手动操作
sudo a2dismod php7.1 // disable
sudo a2enmod php5.6 // enable
【讨论】:
【参考方案10】:从 PHP 5.6 => PHP 7.1
$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
对于旧的 linux 版本
$ sudo service apache2 restart
最新版本
$ systemctl restart apache2
【讨论】:
【参考方案11】:您可以使用以下脚本轻松切换 PHP 版本 我也包含了 phpize 配置。
https://github.com/anilkumararumulla/switch-php-version
下载脚本文件并运行
sh switch.sh
【讨论】:
【参考方案12】:在 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 new blog,将正常进行
【讨论】:
【参考方案13】:您可以使用以下命令行在两个 PHP 版本之间切换。
例如
我想将PHP Version
从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
用于启用版本
【讨论】:
【参考方案14】:可能您的系统中可能有一个旧的 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
命令行:-
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
阿帕奇:-
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
【讨论】:
【参考方案15】:请按照以下步骤操作:
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
【讨论】:
【参考方案16】:我制作了一个 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!"
【讨论】:
【参考方案17】:在ubuntu 20.04
PHP 8.0
和PHP 7.4
版本之间切换:
降级 PHP 8.0
到 PHP 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.4
到 PHP 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
检查更改:
-
在控制台中运行
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 提供
-
通过添加
phpinfo();
在可运行的本地环境中添加一个 PHP 文件,例如 /var/www/html/
路径,并在浏览器中获取 PHP 信息(在页面顶部可以查看 PHP 版本)
【讨论】:
php-config 或 phpize 没有像其他示例中的更改吗?类似 sudo update-alternatives --set php-config /usr/bin/php-config8.0【参考方案18】:这对我有用:-
sudo update-alternatives --set php /usr/bin/php7.4
只需将PHP版本更改为您需要的任何版本我已将其更改为php7.4
【讨论】:
对于php
cli,($ php -v
)。它也适用于我。在 ubuntu 16.04 上更新 nodejs
...时间】:2017-05-0222:22:43【问题描述】:我最近在使用node-v命令时在我的ubuntu16.04中查看节点版本,它显示我的版本为6.9.1,但是当nodejs-v它显示6.9.2之前使用此命令之前npmupdate命令是用过。现在node-v和nodejs-v有什么区别?以及如何... 查看详情
如何在 linux ubuntu 16.04 上安装 SDK 管理器?
...://dl.google.com/android/repository/sdk-tools-linux-3859397.zip下载的SDK命令行工具安装AndroidSDK在我的LinuxUbu 查看详情
如何在 MacOS 上切换命令行工具
】如何在MacOS上切换命令行工具【英文标题】:HowtoswitchcommandlinetoolsonMacOS【发布时间】:2018-06-0512:57:28【问题描述】:我在我的mac上安装了两个命令行工具。所以我想切换命令行工具。我该怎么做?我尝试从Xcode首选项>位置>... 查看详情
ubuntu命令行模式与图形桌面切换方法
参考技术AUbuntu命令行模式与图形桌面Ubuntu提供两种进入方式,一个是我们平常最熟悉的图形界面形式,还有一种是纯命令行方式,1、按Ctrl+Alt+(F1~F6中的任意一个)即可进入纯命令行模式。 进入后,需要输入用户名,... 查看详情
在 Ubuntu 16.04 上,Supervisor 不会在启动时启动 [关闭]
...【发布时间】:2016-11-2720:34:08【问题描述】:我使用以下命令在Ubuntu16.04上安装了Supervisor:sudoapt-getinstallsupervisor如果我使用以下命令运行,Supervisor3.2.0-2 查看详情
如何在运行 Virtualmin 控制面板的 ubuntu 16.04 上安装 php 5.6
】如何在运行Virtualmin控制面板的ubuntu16.04上安装php5.6【英文标题】:howtoinstallphp5.6onubuntu16.04runningVirtualminControlPanel【发布时间】:2019-02-1205:17:12【问题描述】:我已经多次尝试让php5.6在ubuntu16.04上运行在尝试浏览http://domain.com/phpi... 查看详情
在 Ubuntu 16.04 上运行“helm init”命令时,deployments.extensions 被禁止错误
】在Ubuntu16.04上运行“helminit”命令时,deployments.extensions被禁止错误【英文标题】:deployments.extensionsisforbiddenerrorwhenrunning`helminit`commandonUbuntu16.04【发布时间】:2019-09-0818:37:51【问题描述】:我正在尝试为我的Kubernetes集群安装Kuber... 查看详情
如何在ubuntu16.04上安装anacondapythondistribution
...包的集合,并提供免费和付费版本。Anaconda分发带有conda命令行实用程序。您可以通过阅读Anaconda文档页面了解有关Anaconda和conda的更多信息 。本教程将指导您在Ubuntu16.04服务器上安装Anaconda的Python3版本。先决条件在开始本指南... 查看详情
如何在ubuntu16.04上安装anacondapythondistribution
...包的集合,并提供免费和付费版本。Anaconda分发带有conda命令行实用程序。您可以通过阅读Anaconda文档页面了解有关Anaconda和conda的更多信息。本教程将指导您在Ubuntu16.04服务器上安装Anaconda的Python3版本。先决条件在开始本指南之前... 查看详情
在 Ubuntu 16.04 上执行命令 sudo apt-get update 后出现以下错误
】在Ubuntu16.04上执行命令sudoapt-getupdate后出现以下错误【英文标题】:Gettingfollowingerrorafterthecommandsudoapt-getupdateonUbuntu16.04【发布时间】:2017-05-0518:56:28【问题描述】:我对Linux命令一无所知,但我忍不住问为什么在命令sudoapt-getupda... 查看详情
让ubuntu16.04开机进入命令行模式
让ubuntu16.04开机进入命令行模式使用Ubuntu时,有时候我们不想开机进入桌面,想直接进入命令行,这样启动的比较快,1、首先我们修改grub文件,改为如图所示: sudogedit /etc/default/grub改完之后,保存退... 查看详情
sh在ubuntu16.04上安装php7的phalconphp(代码片段)
ubuntu16.04怎么用命令行关机重启
用reboot命令,linux的重启命令是通用的。操作演示:操作设备:戴尔电脑操作系统:win10操作软件:linux1、连接ubuntushell,连接成功后如下图所示2、在窗口的光标处输入reboot命令,下图红色方框处已输入好3、输入好上面的命令后... 查看详情
在 ubuntu 服务器 16.04 上安装 psycopg2 时出错
...r16.04【发布时间】:2020-01-1603:30:18【问题描述】:错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为1----------------------------------------错误:命令出错,退出状态为1:/home/mosi/venv/b 查看详情
无法在 ubuntu 16.04 上安装 mysql
】无法在ubuntu16.04上安装mysql【英文标题】:unabletoinstallmysqlonubuntu16.04【发布时间】:2018-06-0906:47:42【问题描述】:我运行了以下命令wgethttp://repo.mysql.com/mysql-apt-config_0.8.9-1_all.debsudodpkg-imysql-apt-config_0.8.9-1_all.debsudoapt-getupdate 查看详情
降级 Ubuntu(18.04 到 16.04)或使 php 在 apach2 上工作
】降级Ubuntu(18.04到16.04)或使php在apach2上工作【英文标题】:DowngradeUbuntu(18.04to16.04)ormakephponapach2work【发布时间】:2018-10-0617:05:45【问题描述】:我是这个论坛的新人,如果我的主题不符合规则或不在好地方,我很抱歉,这是我... 查看详情
---------已搬运---------ubuntu16.04搭载nginx。然后更换nginx适配的php的版本的操作||ubuntuphp版本切换(代码片段)
目录:一、Ubuntu16.04安装php5.6以及php5.6与php7.0的切换(apache下)二、ubuntu16.04搭载nginx。然后更换nginx适配的PHP的版本的操作2.配置php:3.当PHP版本没了的时候:三、nginx的一些学习一、Ubuntu16.04安装php5.6以及php5.6与php7.0的切... 查看详情
ubuntu怎么从图形桌面切换到命令行界面
组合键可以切换到命令行界面:\x0d\x0actrl+alt+f1\x0d\x0a这里f1到f6都可以,f7就是回到图形界面。\x0d\x0a\x0d\x0a可以使用终端嘛,ctrl+alt+t就打开了。参考技术AUbuntu从图形桌面切换到命令行界面方法/步骤:第一... 查看详情