在源码编译PHP-redis扩展时,遇到缺少头文件问题
【问题描述】
error: ext/standard/php_smart_str.h: No such file or directory
【问题原因】
PHP安装好的头文件目录:/php/include/php/ext/standard/,这些头文件,在php7之前的版本,是包含 php_smart_str.h 的,但7版本中没有 ,而是 php_smart_string.h ,所以需要根据php的版本来下载不同的redis扩展包;
[ PHP7 ] phpredis下载地址:
(Github) https://github.com/phpredis/phpredis
(官方) http://pecl.php.net/package/redis
如果使用Github下载的ZIP包,需要用到unzip命令,没有的话,需要安装:
yum install -y unzip zip
解压并进入源码包
unzip phpredis-develop.zip
cd phpredis-develop
生成configure配置文件:
/usr/local/php/bin/phpize
编译安装:
./configure --with-php-config=/usr/local/php/bin/php-config --enable-redis;
make ;
make install;
配置php.ini
#在extension后添加
extension=/php/lib/php/extensions/no-debug-non-zts-20151012/redis.so
查看php-fpm进程号
[ab@t]# ps wxa|grep php1642 ? Ss 0:00 php-fpm: master process (/php/etc/php-fpm.conf)1643 ? S 0:00 php-fpm: pool www 1644 ? S 0:00 php-fpm: pool www 1840 pts/0 S+ 0:00 grep php
清除进程
[ab@t]# kill -9 1642 1643 1644
重启php-fpm
[ab@t]# /php/sbin/php-fpm -c /php/etc/php-fpm.conf
再次查看php-fpm进程号,变更后即重启成功。
查看php加载模块:
[ab@t]# php -v
PHP 7.0.24 (cli) (built: Oct 30 2017 20:23:22) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies[ab@t]# php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
redis
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib[Zend Modules][ab@t]# php -m | grep redis
redis
至此,php-redis扩展安装完毕