文章来源
https://www.vvave.net/archives/how-to-install-php-pecl-redis-on-centos8-official-repo-php.html
本文由 柒 创作,采用 知识共享署名4.0 国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2020-03-30 15:19 PM
在 CentOS 新版本上部署 LNMP 架构时,因开发环境一直是 PHP 7.2 ,结果发现 C8 系统官方仓库内自带的 PHP 版本就是 7.2 ,后续使用过程中发现缺少部分扩展。
官方构建版本中没有 Redis 扩展,因此需要自行编译安装。
始
切换到工作目录
# cd /usr/local/src
到官方扩展源中下载源码包
小贴士:需要注意的是,扩展的版本和所需依赖的版本和 PHP 版本有关,请自行确定需要的版本。
# wget http://pecl.php.net/get/redis-5.2.1.tgz
对源码包进行解包
# tar xf redis-5.2.1.tgz
对本地环境进行检测生成安装配置
# phpize
小贴士:如果没有找到此命令说明在部署时,只安装了 php-fpm 组件,此命令需要额外安装 php-cli 组件。
如果执行时遇到以下报错
# phpize
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
需要补全开发组件
# dnf install php-devel
正常结果如下
# phpize
Configuring for:
PHP Api Version: 20170718
Zend Module Api No: 20170718
Zend Extension Api No: 320170718
然后即可开始编译扩展的库文件
# cd redis-5.2.1/
# ./configure --with-php-config=/usr/bin/php-config
安装库文件
# make install
Installing shared extensions: /usr/lib64/php/modules/
续
接下来的步骤需要注意,需要将扩展的库文件进行注册,以便 PHP 程序对其进行识别和加载
先检查是否存在编译后的库文件 (.so)
# ls -l /usr/lib64/php/modules/
total 13348
-rwxr-xr-x 1 root root 3363488 Mar 30 15:22 redis.so
然后找到系统扩展配置文件
# ls -l /etc/php.ini
扩展:在其中可以看到配置中将 /etc/php.d/ 中的配置全部加载进了主配置中,因此只需操作子目录加载配置文件即可。
# cd /etc/php.d/
# ll
total 128
-rw-r--r-- 1 root root 4848 Nov 14 12:04 10-opcache.ini
-rw-r--r-- 1 root root 44 Nov 14 12:09 20-bz2.ini
-rw-r--r-- 1 root root 54 Nov 14 12:09 20-calendar.ini
-rw-r--r-- 1 root root 48 Nov 14 12:09 20-ctype.ini
-rw-r--r-- 1 root root 46 Nov 14 12:09 20-curl.ini
-rw-r--r-- 1 root root 44 Nov 14 12:09 20-dom.ini
-rw-r--r-- 1 root root 46 Nov 14 12:09 20-exif.ini
-rw-r--r-- 1 root root 54 Nov 14 12:09 20-fileinfo.ini
-rw-r--r-- 1 root root 44 Nov 14 12:09 20-ftp.ini
-rw-r--r-- 1 root root 42 Nov 14 12:09 20-gd.ini
-rw-r--r-- 1 root root 52 Nov 14 12:09 20-gettext.ini
-rw-r--r-- 1 root root 48 Nov 14 12:09 20-iconv.ini
-rw-r--r-- 1 root root 46 Nov 14 12:09 20-json.ini
-rw-r--r-- 1 root root 54 Nov 14 12:09 20-mbstring.ini
-rw-r--r-- 1 root root 52 Nov 14 12:09 20-mysqlnd.ini
-rw-r--r-- 1 root root 44 Nov 14 12:09 20-pdo.ini
-rw-r--r-- 1 root root 46 Nov 14 12:09 20-phar.ini
-rw-r--r-- 1 root root 56 Nov 14 12:09 20-simplexml.ini
-rw-r--r-- 1 root root 52 Nov 14 12:09 20-sockets.ini
-rw-r--r-- 1 root root 52 Nov 14 12:09 20-sqlite3.ini
-rw-r--r-- 1 root root 56 Nov 14 12:09 20-tokenizer.ini
-rw-r--r-- 1 root root 44 Nov 14 12:09 20-xml.ini
-rw-r--r-- 1 root root 56 Nov 14 12:09 20-xmlwriter.ini
-rw-r--r-- 1 root root 44 Nov 14 12:09 20-xsl.ini
-rw-r--r-- 1 root root 50 Nov 14 12:09 30-mysqli.ini
-rw-r--r-- 1 root root 56 Nov 14 12:09 30-pdo_mysql.ini
-rw-r--r-- 1 root root 58 Nov 14 12:09 30-pdo_sqlite.ini
-rw-r--r-- 1 root root 46 Nov 14 12:09 30-wddx.ini
-rw-r--r-- 1 root root 56 Nov 14 12:09 30-xmlreader.ini
-rw-r--r-- 1 root root 47 Nov 14 12:49 40-zip.ini
-rw-r--r-- 1 root root 645 Nov 14 12:09 opcache-default.blacklist
可以看到官方构建的版本为了防止冲突,为全部的扩展进行了分类,并加上了序号。效仿其规律,防止与系统自带的扩展冲突,自行创建配置文件并命名
# touch 99-redis.ini
写入以下配置
; Enable Redis extension module
extension=redis.so
保存后重启 PHP 即可看到效果
# php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
redis
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
评论