Laravel 10数据库连接报错:could not find driver问题求助
排查Laravel 10数据库连接「could not find driver」问题
核心原因分析
能正常执行迁移却无法读写数据,说明CLI环境的PHP配置和Web请求环境的PHP配置不一致——迁移依赖CLI版PHP,而Web接口依赖Web服务(Nginx/Apache)对应的PHP环境,后者缺少MySQL驱动扩展。
具体排查修复步骤
检查Web环境的PHP MySQL扩展
新建phpinfo.php文件,写入:<?php phpinfo(); ?>访问该文件,搜索「pdo_mysql」或「mysqlnd」,如果没有相关条目,说明Web环境的PHP未安装MySQL驱动:
- Ubuntu/Debian(对应PHP版本,比如8.2):
sudo apt install php8.2-mysql - CentOS/RHEL:
sudo dnf install php-mysqlnd - Windows:打开
php.ini,取消注释extension=pdo_mysql和extension=mysqli,保存后重启Web服务
- Ubuntu/Debian(对应PHP版本,比如8.2):
确认CLI与Web的PHP版本一致
终端执行php -v,对比phpinfo页面显示的PHP版本,若版本不同,说明两个环境用了不同的PHP,需确保Web环境的PHP安装了对应驱动。验证Laravel数据库配置
检查.env文件中DB_CONNECTION=mysql,以及DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD是否正确,避免空格或拼写错误。可在控制器中临时添加:dd(DB::connection()->getPdo());执行请求查看输出,确认连接状态。
重启服务生效
安装扩展或修改配置后,必须重启Web服务器和PHP-FPM:# Nginx + PHP-FPM示例 sudo systemctl restart nginx php8.2-fpm
额外注意(针对JobController)
- 确保控制器顶部正确引入依赖:
use Illuminate\Support\Facades\DB;或对应模型use App\Models\Job; - 修正查询语句的LIKE写法,避免
%%的空匹配问题,建议用查询构建器语法:$jobs = Job::where('name', 'like', "%{$keyword}%") ->orWhere('address', 'like', "%{$keyword}%") ->get();
内容的提问来源于stack exchange,提问作者Shandy
相关产品推荐
相关产品推荐

