Laravel 5.5全新安装迁移失败:Could not find driver问题求助
我之前也碰到过一模一样的情况,这个报错核心就是PHP没有加载对应数据库的PDO扩展驱动,不管是MySQL还是PostgreSQL,解决思路都是先确认PHP扩展状态,再一步步排查配置,咱们来理清楚:
第一步:确认PHP CLI使用的配置文件
Windows下很容易踩的坑是:网页端(比如XAMPP的Apache)用的php.ini和命令行(CLI)用的不是同一个!所以首先得找到当前CLI模式下PHP的配置文件:
在终端执行:
php --ini
输出里的Loaded Configuration File就是你需要修改的那个php.ini,别搞错文件白忙活!
第二步:开启对应数据库的PDO扩展
打开上面找到的php.ini文件,找到以下扩展行,去掉前面的分号;来启用:
针对PostgreSQL(你当前配置的数据库)
extension=pdo_pgsql.dll extension=pgsql.dll
针对MySQL(你之前测试的数据库)
extension=pdo_mysql.dll
另外要确认PHP安装目录下的ext文件夹里存在对应的dll文件(比如php_pdo_pgsql.dll、php_pgsql.dll),如果没有,需要下载和你PHP 7.1.11版本完全匹配的扩展包(注意线程安全/非线程安全、x86/x64要对应),把dll文件放到ext文件夹里再重启配置。
第三步:验证扩展是否加载成功
修改完php.ini后,一定要重启终端(或者直接重启电脑,确保PHP重新加载配置),然后执行:
php -m
查看输出列表里有没有pdo_pgsql、pgsql(PostgreSQL)或者pdo_mysql(MySQL),如果有就说明扩展已经加载成功了。
第四步:测试数据库基础连接
先排除Laravel的问题,写个简单的测试脚本test_connection.php:
<?php // 测试PostgreSQL连接(对应你的.env配置) try { $pdo = new PDO('pgsql:host=127.0.0.1;port=5432;dbname=projects', 'garden', 'postgres'); echo "PostgreSQL 连接成功!"; } catch (PDOException $e) { echo "连接失败: " . $e->getMessage(); }
在终端执行:
php test_connection.php
如果能输出连接成功,说明数据库和PHP的连接没问题,接下来就看Laravel的配置。
第五步:Laravel配置排查
- 确认
.env文件里的配置没有拼写错误,比如DB_CONNECTION=pgsql、数据库名、用户名密码都和PostgreSQL里的一致 - 有时候Laravel会缓存旧配置,执行以下命令清除缓存:
php artisan config:clear
- 最后再执行
php artisan migrate试试,应该就能正常运行了。
额外提醒:如果你用的是XAMPP的PHP,一定要确认终端里的PHP版本是XAMPP的7.1.11,执行php -v就能看到版本信息,避免系统里有其他PHP版本导致冲突。
内容的提问来源于stack exchange,提问作者Frnak

