致命错误:找不到"Redis"类

Tho*_*mas 10 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');
Run Code Online (Sandbox Code Playgroud)

从命令行工作正常,但不是从Web浏览器.

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...
Run Code Online (Sandbox Code Playgroud)

我甚至都看不到它 phpinfo()

全部安装了apt-get install

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

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

Kar*_*eem 11

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

sudo apt-get install php-redis
Run Code Online (Sandbox Code Playgroud)

  • ...然后按照以下建议重新启动php-fpm。 (3认同)

Tho*_*mas 10

手动安装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
Run Code Online (Sandbox Code Playgroud)

复制自Rico的技术备忘录


pwy*_*wyg 5

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

sudo service php-fpm restart

sudo service php7.0-fpm restart

sudo service php5-fpm restart

如果上述任何命令对您都不起作用,则可能需要搜索“重新启动PHP-FPM”。

为了提供一些背景信息,我已经使用标准安装了phpredis,sudo apt-get install php-redis并且使用重启了nginx,sudo systemctl restart nginx但是每当尝试new Redis()在PHP中使用时,都会收到与问题相同的错误(...未找到类'Redis'...)。

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

我现在看到的问题是重新启动NGINX并没有重新启动PHP-FPM。使用ps aux | grep php-fpm,看是否有运行时,我已经停止了NGINX证实了我的怀疑任何PHP-FPM过程。因为需要重新启动才能重新加载PHP模块,所以除了 NGINX重新启动之外,还需要重新启动PHP-FPM 。