在 CentOS 7 中设置 PHP 的默认版本

Posted

技术标签:

【中文标题】在 CentOS 7 中设置 PHP 的默认版本【英文标题】:Set default version of Php in CentOS 7 【发布时间】:2018-12-24 22:43:48 【问题描述】:

我在opt/remi 文件夹php56php72 中有两个版本的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和软件集php7​​4有什么区别? 没有区别,“scl”命令和“module”命令只是开启软件采集的方式不同而已。两者都可以从我的存储库中打包

以上是关于在 CentOS 7 中设置 PHP 的默认版本的主要内容,如果未能解决你的问题,请参考以下文章

无法在 apache2 [Debian 7.1] 中设置默认索引页

如何在 Google App Engine 中设置我的默认版本

如何在 IIS 7 应用程序池中设置 .net Framework 4.5 版本

如何在 mPDF 中设置自定义页面大小? Mpdf版本7

在Linux中设置php变量的方法

在Ubuntu_meta 16.04中设置默认Python3.5的命令