致命错误:Class' Redis'未找到

时间:2014-08-10 15:57:45

标签: ubuntu nginx redis

我已经在我的ubuntu 14服务器上安装了带有phpredis扩展的Redis。我正在使用Nginx服务器。我有php测试脚本

$redis=new Redis() or die("Cannot load Redis module.");
$redis->connect('localhost');
$redis->set('random', rand(5000,6000));
echo $redis->get('random');

从命令行可以正常工作,但不能从网络浏览器工作。

Nginx错误日志:

[info] 31102#0: Using 32768KiB of shared memory for push module in /etc/nginx/nginx.conf:82
[error] 31108#0: *21 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Class 'Redis' not found in...

我甚至无法在phpinfo()

中看到它

全部安装了apt-get install

所有其他模块(mysql,imagemagick ......)工作正常

我在谷歌上花了几个小时但没有找到任何有用的东西

3 个答案:

答案 0 :(得分:7)

PhpRedis的手动安装解决了这个问题

git clone git://github.com/nicolasff/phpredis.git
cd phpredis
phpize
./configure
make
sudo -s make install

sudo -s
echo "extension=redis.so">/etc/php5/conf.d/redis.ini
ln -s /etc/php5/conf.d/redis.ini /etc/php5/fpm/conf.d/20-redis.ini
exit

Rico's Tech Memo

复制

答案 1 :(得分:6)

您已经安装了redis,但没有安装php-redis。您只需运行以下命令即可安装php-redis

sudo apt-get install php-redis

答案 2 :(得分:3)

TLDR;
在使用带PHP 7的NGINX的Ubuntu 16.04上,我发现PHP-FPM没有重启。简单重启服务对我有用:

sudo service php-fpm restart

sudo service php7.0-fpm restart
OR
sudo service php5-fpm restart

您可能需要搜索"重新启动PHP-FPM"如果上述任何命令都不适合您。

为了给出一些上下文,我使用标准sudo apt-get install php-redis安装了phpredis并且我使用sudo systemctl restart nginx重新启动了nginx但是每当在PHP中尝试使用new Redis()时,我收到了与问题相同的错误(。 ..班级' Redis'未找到...)。

当在NGINX服务器上的PHP文件中运行phpinfo();时,我可以看到PHP-FPM正在从/etc/php/7.0/fpm/conf.d加载其他配置(" 扫描此目录以获取更多信息。 ini文件"部分)。使用简单的ls -al /etc/php/7.0/fpm/conf.d查看该目录,我可以看到有一个名为20-redis.ini的符号链接,但该文件未在phpinfo部分加载" 解析其他.ini文件&#34 ;.

我现在看到的问题是重启NGINX没有重启PHP-FPM。当我停止NGINX时,使用ps aux | grep php-fpm查看是否有任何PHP-FPM进程正在运行,这证实了我的怀疑。由于重新加载PHP模块需要重新启动,因此需要重新启动PHP-FPM 以重启NGINX。