我在ubuntu上用php 5.6.28 的源代码编译了一个版本,但是对接redis失败。
总是提示 Fatal error: Class 'Redis' not found in /alidata/www/web/function.php on line 206
我编译时configure命令是这样的
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=php-fpm \
--with-fpm-group=php-fpm \
--with-mysql=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
--with-mysqli=mysqlnd \
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-ftp \
--enable-mbstring \
--enable-exif \
--disable-ipv6 \
--with-pear \
--with-curl \
--with-openssl
代理服务器用nginx 到 php-fpm,我用 apt-get 安装过了 php5-redis,php.ini 的extension也改了,还是不行。
extension_dir=/usr/local/php/lib/php/extensions
extension=redis.so
phpinfo是这样的

使用 php-fpm -i 查询,发现php.ini没有加载成功,失败原因匪夷所思,明明我在这个目录下是有php.ini的啊!
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => (none)
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
看你的更新感觉extension地址不对。
比如我的默认的扩展地址是(这个不需要你改):/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212
查一下你的扩展地址。
这地址下是应该要有 redis.so文件的。
修改php.ini,最后重启php-fpm 即可
php-fpm -m 才是现实 cgi模式下的扩展安装情况
php -m 是cli模式下的,注意区分,有些安装环境 二者的 php.ini文件路径不一致,要注意。
从phpinfo 信息来看,你的php.ini 路径是 /usr/local/php/etc/php.ini
按通用的安装扩展方法安装后,修改php.ini,最后重启php-fpm 即可。
我解决这个问题了,但问题原因仍然没有找到。
经过大家的帮助,我定位到问题是php.ini加载失败,然后我搜索找到了这篇文件
http://ask.apelearn.com/quest...
于是我用strace跟了一下
发现php-fpm 去/usr/local/php目录下寻找php.ini,然后我把php.ini往/usr/local/php目录下拷贝了一份,然后 service php-fpm restart,终于加载成功了!
然而,我并不知道为什么php-fpm会去这个目录下去找php.ini
sudo apt-get install php5.6-redis 试试
检查extension_dir配置的扩展目录是否有redis.so
ubuntu,apt-get安装php的,需要在/etc/php5/mods-available/新增redis.ini文件
; configuration for php Redis module
; priority=20
extension=redis.so
可参考这篇文章 Ubuntu14-04安装redis和php5-redis扩展
ubuntu应该有带php*-redis的包的,search下吧。如果没找到的话,就到redis扩展git仓库clone代码下来,phpize,configure,make,make install,修改配置文件php.ini(确认是你编译的php的配置文件)。另外记得重启php-fpm(观察下有没有什么错误提示,比如xxx模块错误)。
apt-get install redis-server 我觉得你需要的是这个
首先,你可以执行PHP -m 会提示模块是否加载成功,如果extension的路径不对会提示你的。
我一般都是编译安装的,下载redis扩展源码
redis扩展下载地址https://github.com/nicolasff/...
下载以后你在按照上面的方法编译,php很多扩展都不在核心,需要自己下载