Ubuntu升级后Laravel报Class 'Redis'未找到问题求助
Laravel站点升级apt后Redis类找不到及数据库驱动问题解决建议
问题背景
在Ubuntu服务器执行sudo apt upgrade后,Laravel 9.45(PHP 8.1)站点崩溃,所有页面提示Class 'Redis' not found。已尝试以下操作但无效:
- 执行
sudo apt install php-redis,确认扩展已安装 - 测试
redis-cli ping返回PONG,Redis服务正常 - 修改
config/database.php中Redis客户端配置,无效果 - 执行
composer install predis/predis,确认predis已升级至v2.0.3 - 多次重启服务器
补充信息:发现database.php配置被.env覆盖,将.env中REDIS_CLIENT从phpredis改为predis后,出现新错误:could not find driver,同时伴随数据库查询错误:select * from userswhereid= 77 andusers.deleted_at is null limit 1(77为当前用户ID)
解决步骤
1. 确认PHP Redis扩展是否真的加载成功
- 执行
php -m | grep redis,查看CLI环境下是否加载了redis扩展 - 在站点根目录创建
phpinfo.php文件,内容为<?php phpinfo(); ?>,访问该文件并搜索redis,确认Web环境下扩展是否加载 - 如果CLI加载但Web环境未加载,重启PHP-FPM服务:
sudo systemctl restart php8.1-fpm(根据你的PHP版本调整命令)
2. 修复php-redis扩展与PHP版本的匹配问题
apt upgrade可能更新了PHP或扩展版本,导致兼容问题:
- 明确安装对应PHP8.1版本的redis扩展:
sudo apt install php8.1-redis - 安装完成后再次执行
php -m | grep redis确认加载,随后重启PHP-FPM和Web服务(如Nginx或Apache)
3. 处理predis模式下的数据库驱动问题
切换到predis后出现could not find driver,说明数据库驱动缺失,按以下操作排查:
- 安装对应PHP版本的数据库扩展,以MySQL为例:
sudo apt install php8.1-mysql - 重启PHP-FPM服务确保扩展加载
- 检查
.env文件中的数据库配置,确认DB_CONNECTION、DB_HOST、DB_PORT、DB_DATABASE等参数无误,未被升级操作误修改
4. 清除Laravel缓存
系统升级后缓存可能失效,执行以下命令清理各类缓存:
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear
- 如果执行时出现权限问题,切换到Web服务用户执行,例如:
sudo -u www-data php artisan cache:clear
5. 检查PHP Redis配置文件
- 找到PHP 8.1的redis配置文件,通常路径为
/etc/php/8.1/mods-available/redis.ini - 确认文件中
extension=redis.so未被注释,若有注释则去掉,之后重启PHP-FPM服务
内容的提问来源于stack exchange,提问作者ThurstonLevi
相关产品推荐
相关产品推荐

