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

17

我在 opt/remi 文件夹中有两个版本的PHP,分别为 php56php72 ,但是当我在命令行上运行 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?

4个回答

37

我在opt/remi文件夹中有两个版本的PHP,分别是php56和php72

如何将默认版本设置为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成为默认版本(基础系统),请按照向导指示中“默认/单版本”的说明进行安装(并将5.6作为辅助版本保留)。


3
SCL启用后是否能在重启后保留? - beppe9000
2
非常感谢。不过为了让它工作,我必须键入scl enable rh-php72 bash - Imtiaz
我正在使用Centos 7,我按照@lmtiaz所说的做了,它起作用了。 - Rouhollah Mazarei
你如何撤销此操作,以禁用此scl命令? - drab
退出(shell);) - Remi Collet
不是持久的,如果关闭 shell,则返回旧版本。 - iWasCloud

6

在Centos 7中更改php cli版本

首先,找到您的php7,运行phpinfo()并获取路径,或者您可以用其他方法。对于我来说,它是:

/usr/local/lsws/lsphp73/

然后:
cd ~
. ~/.bash_profile

同时:

alias php='/usr/local/lsws/lsphp73/bin/php'

现在:

php -v

PHP 7.3.13(命令行)(构建日期:2019年12月20日 16:02:35)(NTS)


这个重启后还会保留吗?我重启了,但它又回到了旧的php版本。但是我没有执行'cd ~. ~/.bash_profile'这一步,因为我不知道那是干什么的。 - it's a hire car baby
不是持久的,如果关闭 shell,则返回旧版本。 - iWasCloud

1
创建文件“/etc/profile.d/php.sh”。使用pathmunge将您想要设置为默认选项的php二进制文件路径添加到第一行,并保存文件。
示例:
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 足够了,但对于其他 SCLs 来说不够用,最好使用 ". scl_source enable xxx"(或在可用时使用 "module load xxx")。这些命令还会重定向 LD_LIBRARY_PATH、man 页面等。 - Remi Collet
如果您想要单个版本,请不要使用为多个版本设计的SCL,可以查看向导:https://rpms.remirepo.net/wizard/ - Remi Collet

1
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}

1
"scl" 命令使用 /opt/remi/php74/enable 文件,而 "module" 命令使用 /usr/share/Modules/modulefiles/php74 文件,但目标是相同的。 - Remi Collet
以编程为相关内容的翻译:module php74 和 Software Collection php74 有什么区别? - user7568519
1
没有区别,“scl”命令或“module”命令只是启用软件集合的不同方式。两者都可以从我的存储库中获取。 - Remi Collet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接