ubuntu 下php 无法扩展redis
PHP中文网
PHP中文网 2017-04-10 18:03:49
[PHP讨论组]

我在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)
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(7)
天蓬老师

看你的更新感觉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跟了一下

strace  /usr/local/php/sbin/php-fpm -i &> runlog

发现php-fpm 去/usr/local/php目录下寻找php.ini,然后我把php.ini往/usr/local/php目录下拷贝了一份,然后 service php-fpm restart,终于加载成功了!
然而,我并不知道为什么php-fpm会去这个目录下去找php.ini

PHP中文网

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扩展

ringa_lee

你的phpinfo没贴全啊,只有php 5.6 nts,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扩展源码

phpize
./configure --with-php-config=/php路径/php-config
make && make install
//修改php.ini
extension=redis.so

redis扩展下载地址https://github.com/nicolasff/...

下载以后你在按照上面的方法编译,php很多扩展都不在核心,需要自己下载

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号