在源碼編譯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擴展安裝完畢