Ubuntu 致命错误:类';Redis';找不到

Ubuntu 致命错误:类';Redis';找不到,ubuntu,nginx,redis,Ubuntu,Nginx,Redis,我已经在我的Ubuntu14服务器上安装了带有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'); 它在命令行中运行良好,但在web浏览器中运行

我已经在我的Ubuntu14服务器上安装了带有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');
它在命令行中运行良好,但在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...
我甚至在
phpinfo()中也看不到它

所有安装都使用apt get install

所有其他模块(mysql、imagemagick…)工作正常


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

手动安装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
复制自TLDR;
在使用NGINX和PHP7的Ubuntu 16.04上,我发现PHP-FPM没有重新启动。简单地重新启动服务对我来说很有效:

sudo服务php fpm重启


sudo服务php7.0-fpm重启


sudo服务php5 fpm重启


如果上述任何命令对您无效,您可能需要搜索“重新启动PHP-FPM”。

为了提供一些上下文,我使用标准的
sudo apt get install php redis安装了phpredis,并使用
sudo systemctl restart nginx
重新启动了nginx,但每当尝试在php中使用
new redis()
时,我都会收到与问题中相同的错误(…找不到类'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。当我停止NGINX时,使用ps aux | grep php fpm
查看是否有任何php-fpm进程正在运行,这证实了我的怀疑。由于重新加载PHP模块需要重新启动,因此除了NGINX重新启动之外,还需要PHP-FPM重新启动。

您安装了redis,但没有安装PHP redis。您只需运行下面的命令即可安装php redis

sudo apt-get install php-redis

…然后重新启动php fpm,如下所示。这是我修复它的原因,但redis和php redis之间有什么区别?@abbood redis在您的服务器上安装redis。php redis允许您使用php提取和操作redis数据。您可以在没有php-redis的情况下在命令行上运行redis。您需要以某种方式启用redis php扩展吗?这就做到了。此外,我还在运行Lumen的开发服务器。在安装了php redia和bingo之后,我杀死了它并重新启动了它。在Ubuntu18上,使用它重新启动php fpm
sudo systemctl restart php7.2-fpm.service
用您的php版本替换“7.2”。经过数小时的努力,上述解决方案在我的服务器上运行正常。重新启动nginx是不够的。对于谷歌来说,正如中提到的:PHP5不再受支持。4.3.0是最后一个与旧版本的PHP一起使用的版本。使用next命令克隆正确的分支
gitclone-b4.3.0——单分支https://github.com/phpredis/phpredis.git