致命错误:找不到“Redis”类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了致命错误:找不到“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');
从命令行工作正常,但不是从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 ......)工作正常
我在谷歌上花了几个小时,但没有发现任何有用的东西
手动安装Php Redis解决了这个问题
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
你已经安装了redis但没有安装php-redis。您只需运行以下命令即可安装php-redis
sudo apt-get install php-redis
TLDR;
在使用带有PHP 7的NGINX的Ubuntu 16.04上,我发现PHP-FPM没有重新启动。简单重启服务对我有用:
sudo service php-fpm restart
要么
sudo service php7.0-fpm restart
要么
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文件”中加载。
我现在看到的问题是重启NGINX没有重启PHP-FPM。使用ps aux | grep php-fpm
查看当我停止NGINX时是否有任何PHP-FPM进程运行确认我的怀疑。由于重新加载PHP模块需要重新启动,因此除了NGINX重启之外还需要重启PHP-FPM。
以上是关于致命错误:找不到“Redis”类的主要内容,如果未能解决你的问题,请参考以下文章