CentOS安装PHP7的正确方法
CentOS上的PHP版本都十分古老,满足不了一些框架对PHP版本的要求。于是,出现了许多第三方软件库,如EPEL、RPM Fusion、Remi等,这些库提供了新版的PHP。让我们的系统能与时俱进。
但是,第三方软件库有几个缺点:第一,他们提供的软件没有经过CentOS官方测试,在安装软件的同时,可能会替换掉系统的一些核心文件,造成系统不稳定。第二,第三方库安装的软件可能不保证兼容性,也许对系统升个级就会导致某个软件没法使用。
安装SCL很简单,只需一条命令就可以了:
[root@localhost]# yum install centos-release-scl-rh
然后就能在yum中搜到新版的PHP了:
[root@localhost]# yum search php...php54-runtime.x86_64
php55-runtime.x86_64
rh-php56-runtime.x86_64
rh-php70-runtime.x86_64...
rh- 前缀是RedHat的意思,告诉你这是官方提供的PHP而不是第三方库提供的。作者猜测这个前缀规范是2015年左右制定的,PHP5.4 & 5.5是在这之前发布的,为了保证你的程序的兼容性(比如你的某些程序里已经写了yum install php55,加个前缀程序就挂了),就没带上rh- 前缀。
接下来,安装PHP7.0:
[root@localhost]# yum install rh-php70
安装完之后,PHP实际会安装在/opt/rh目录下。
此时如果你运行php命令,系统依然会提示你command not found。这是因为,SCL的风格就是把软件对系统的影响减少到最小,甚至安装完PHP,php命令都不会被添加到 $PATH 变量中,所以你没法直接执行软件中的命令的。需要通过 scl enable 命令显示执行:
先看看SCL安装了哪些软件:
[root@localhost]# scl -lrh-php70
可以看到我们在系统安装了一个rh-php70,先启用它并执行命令:
[root@localhost]# scl enable rh-php70 "php -v"PHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
命令成功执行了。要是每一条命令都要这么执行,太麻烦了!不要紧,你可以不用每次执行一条命令,而是直接执行 bash 命令,那么新开的shell就能自动识别php了:
[root@localhost]# scl enable rh-php70 bash[root@localhost]# php -vPHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
[root@localhost ~]# php -m[PHP Modules]
bz2
calendar...
SCL以 scl enable 方式管理软件,虽然在使用上增加了一点点的麻烦,但这绝对地保证了系统稳定性。而且这么做还有一个好处:就是系统上可以多个PHP版本共存而互相不冲突。方便你测试代码或者框架,在各个版本PHP上的兼容性。
CentOS上的PHP版本都十分古老,满足不了一些框架对PHP版本的要求。于是,出现了许多第三方软件库,如EPEL、RPM Fusion、Remi等,这些库提供了新版的PHP。让我们的系统能与时俱进。
但是,第三方软件库有几个缺点:第一,他们提供的软件没有经过CentOS官方测试,在安装软件的同时,可能会替换掉系统的一些核心文件,造成系统不稳定。第二,第三方库安装的软件可能不保证兼容性,也许对系统升个级就会导致某个软件没法使用。
安装SCL很简单,只需一条命令就可以了:
[root@localhost]# yum install centos-release-scl-rh
然后就能在yum中搜到新版的PHP了:
[root@localhost]# yum search php...php54-runtime.x86_64
php55-runtime.x86_64
rh-php56-runtime.x86_64
rh-php70-runtime.x86_64...
rh- 前缀是RedHat的意思,告诉你这是官方提供的PHP而不是第三方库提供的。作者猜测这个前缀规范是2015年左右制定的,PHP5.4 & 5.5是在这之前发布的,为了保证你的程序的兼容性(比如你的某些程序里已经写了yum install php55,加个前缀程序就挂了),就没带上rh- 前缀。
接下来,安装PHP7.0:
[root@localhost]# yum install rh-php70
安装完之后,PHP实际会安装在/opt/rh目录下。
此时如果你运行php命令,系统依然会提示你command not found。这是因为,SCL的风格就是把软件对系统的影响减少到最小,甚至安装完PHP,php命令都不会被添加到 $PATH 变量中,所以你没法直接执行软件中的命令的。需要通过 scl enable 命令显示执行:
先看看SCL安装了哪些软件:
[root@localhost]# scl -lrh-php70
可以看到我们在系统安装了一个rh-php70,先启用它并执行命令:
[root@localhost]# scl enable rh-php70 "php -v"PHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS )Copyright (c) 1997-2016 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
命令成功执行了。要是每一条命令都要这么执行,太麻烦了!不要紧,你可以不用每次执行一条命令,而是直接执行 bash 命令,那么新开的shell就能自动识别php了:
[root@localhost]# scl enable rh-php70 bash[root@localhost]# php -vPHP 7.0.10 (cli) (built: Nov 3 2016 08:06:03) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
[root@localhost ~]# php -m[PHP Modules]
bz2
calendar...
SCL以 scl enable 方式管理软件,虽然在使用上增加了一点点的麻烦,但这绝对地保证了系统稳定性。而且这么做还有一个好处:就是系统上可以多个PHP版本共存而互相不冲突。方便你测试代码或者框架,在各个版本PHP上的兼容性。
本文出至:学新通
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/15642
- 联系方式: luke.wu@swvq.com
- 来源链接: www.php.cn/topic/php7/453125.html
-
windows上查看nginx是否启动
PHP中文网 04-19 -
2023年最新的28道PHP面试题附答案
PHP中文网 03-27 -
docker hub 进不去怎么办
PHP中文网 03-15 -
推荐五款xml编辑工具
PHP中文网 03-04 -
navicat怎样清除注册表
PHP中文网 04-05 -
ChatGPT应用通过Axios+EventSource使用GPT3.5 API
uWydnA 03-13 -
强力推荐10款好看使用的Bootstrap后台管理系统模板
PHP中文网 03-09 -
vscode怎么调整代码大小两种方法
PHP中文网 03-11 -
navicat删除的数据能还原吗
PHP中文网 04-09 -
navicat连接sqlserver数据库
PHP中文网 04-03