我已经使用 pecl install redis
安装了 php5 pecl 扩展,添加了 extension=redis.so
到 /etc/php5/fpm/conf.d/21-redis.ini
和 /etc/php5/cli/conf.d/21-redis.ini
。然后我重新启动了 php5-fpm
和 nginx
。
现在 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
主进程死了,但 worker 没有。 service php5-fpm restart
没有更新它们。
我手动杀死了剩余的 worker 并再次重新启动了 php-fpm。现在一切正常。
关于php5-fpm 完全忽略 redis ini 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960651/