我用pecl install redis
安装了php5 pecl扩展,在/etc/php5/fpm/conf.d/21-redis.ini
和/etc/php5/cli/conf.d/21-redis.ini
添加了extension=redis.so
/etc/php5/cli/conf.d/21-redis.ini
。 然后我重新启动了php5-fpm
和nginx
。
现在php -m | grep redis
php -m | grep redis
显示我redis安装正确的cli,但phpinfo
(使用nginx)显示没有redis和Additional .ini files parsed
列表下:
/etc/php5/fpm/conf.d/00-ioncube.ini,/etc/php5/fpm/conf.d/05-opcache.ini,/etc/php5/fpm/conf.d/10-mysqlnd.ini ,/etc/php5/fpm/conf.d/10-pdo.ini,/etc/php5/fpm/conf.d/20-curl.ini,/etc/php5/fpm/conf.d/20-json。 ini,/etc/php5/fpm/conf.d/20-mysql.ini,/etc/php5/fpm/conf.d/20-mysqli.ini,/etc/php5/fpm/conf.d/20-pdo_mysql .ini,/etc/php5/fpm/conf.d/20-readline.ini
但是相同的目录包含21-redis.ini,由于某些原因被忽略:
# ls -1 /etc/php5/fpm/conf.d/ 00-ioncube.ini 05-opcache.ini 10-mysqlnd.ini 10-pdo.ini 20-curl.ini 20-json.ini 20-mysql.ini 20-mysqli.ini 20-pdo_mysql.ini 20-readline.ini 21-redis.ini
该文件的内容如预期的那样:
# cat /etc/php5/fpm/conf.d/21-redis.ini extension=redis.so
而且它是世界上可读的。
/var/log/php5-fpm.log
没有错误,也没有/var/log/syslog
。
为什么不用php-fpm
加载redis扩展?
这是因为php5-fpm
主进程死了,但工人没有。 service php5-fpm restart
没有更新它们。
我手动杀死了剩下的工人,并重新启动了php-fpm。 现在一切正常。