在 CentOS 7 中设置 PHP 的默认版本
Posted
技术标签:
【中文标题】在 CentOS 7 中设置 PHP 的默认版本【英文标题】:Set default version of Php in CentOS 7 【发布时间】:2018-12-24 22:43:48 【问题描述】:我在opt/remi
文件夹php56
和php72
中有两个版本的PHP
但是当我在 cmd 上 php -v
时,它显示:
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
如何将默认版本设置为 PHP 7.2?
【问题讨论】:
【参考方案1】:我在 opt/remi 文件夹 php56 和 php72 中有两个版本的 PHP
如何将默认版本设置为 PHP 7.2
SCL 专为并行安装而设计,因此请勿更改基本系统中的默认版本
启用收藏后,将使用该版本
$ scl enable php72 bash
$ php -v
PHP 7.2.8 (cli) (built: Jul 17 2018 05:35:43) ( NTS )
如果您希望 7.2 成为默认版本(基本系统),您应该安装它,根据 Wizard instructions 的“默认/单一版本”(并保留 5.6 作为辅助版本)
【讨论】:
scl 是否启用在重启后存活? 非常感谢。不过,我必须输入scl enable rh-php72 bash
才能工作。
我使用的是 Centos 7,我按照@lmtiaz 所说的做了,而且效果很好。
如何恢复这个动作,禁用这个 scl 命令?
退出(外壳);)【参考方案2】:
在 Centos 7 中更改 php cli
版本
首先,找到您的php7
,运行phpinfo()
并获取path
,或者您可以使用其他方式。对我来说是:
/usr/local/lsws/lsphp73/
然后:
cd ~
. ~/.bash_profile
还有:
alias php='/usr/local/lsws/lsphp73/bin/php'
现在:
php -v
PHP 7.3.13 (cli)(构建时间:2019 年 12 月 20 日 16:02:35)(NTS)
【讨论】:
重启后这种情况持续存在吗?我重新启动,这恢复到旧的 php。但我没有做 'cd ~ 。 ~/.bash_profile' 的一部分,因为我不知道那是做什么的。【参考方案3】:创建一个文件“/etc/profile.d/php.sh”。使用 pathmunge 在第一行添加你想要的默认路径到你的 php bin 并保存文件。
例子:
pathmunge /opt/remi/php73/root/bin
之后再次登录重新加载您的个人资料。
现在,如果你执行 which php 和 php -v 你应该会在我的情况下看到以下输出
[root@host etc]# which php
/opt/remi/php73/root/bin/php
[root@host etc]# php -v
PHP 7.3.4 (cli) (built: Apr 2 2019 13:48:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.4, Copyright (c) 2002-2019, by ionCube Ltd.
这是使用已在最小安装中提供的工具完成此任务的首选方式。这也允许脚本和命令在完成其他任务时命中正确的 php 二进制文件。命令,例如 pear、pecl、phar、php-config。在设置默认值时,您希望您的体验是全球性的,否则在尝试安装扩展程序或完成其他任务时,您可能最终仍会获得 5.6 版的工具。
【讨论】:
虽然 PATH 对于 PHP 来说已经足够了,但对于其他 SCL 来说却不是这样,“.scl_source enable xxx” 更好(或“module load xxx”,如果可用)。这些命令还重定向 LD_LIBRARY_PATH、手册页、...) 再一次,如果你想要一个版本,不要使用为多个版本设计的 SCL,请参阅向导:rpms.remirepo.net/wizard【参考方案4】:module enable php74
为了您的理解:
cat /opt/remi/php74/enable
export PATH=/opt/remi/php74/root/usr/bin:/opt/remi/php74/root/usr/sbin$PATH:+:$PATH
export LD_LIBRARY_PATH=/opt/remi/php74/root/usr/lib64$LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH
export MANPATH=/opt/remi/php74/root/usr/share/man:$MANPATH
【讨论】:
"scl" 命令使用 /opt/remi/php74/enable 文件,而 "module" 命令使用 /usr/share/Modules/modulefiles/php74 文件,但目标相同。 模块php74和软件集php74有什么区别? 没有区别,“scl”命令和“module”命令只是开启软件采集的方式不同而已。两者都可以从我的存储库中打包以上是关于在 CentOS 7 中设置 PHP 的默认版本的主要内容,如果未能解决你的问题,请参考以下文章
无法在 apache2 [Debian 7.1] 中设置默认索引页
如何在 Google App Engine 中设置我的默认版本