Linux环境下Laravel执行php artisan migrate提示找不到驱动求助
嘿,这个「could not find driver」错误我熟得很,本质就是PHP没装对应数据库的驱动,或者驱动没在配置里启用。下面分情况给你一步步解决:
先确认你的数据库类型,不同数据库驱动安装方式不一样
如果你用的是MySQL/MariaDB
1. 安装并启用PHP的MySQL扩展
- Ubuntu/Debian系统:
先搞清楚你的PHP版本(执行php -v就能看),比如是PHP8.1的话,执行:
安装完记得重启web服务器和PHP-FPM(如果用了的话):sudo apt-get install php8.1-mysql# Apache用户 sudo systemctl restart apache2 # Nginx用户 sudo systemctl restart nginx # 重启PHP-FPM(对应你的版本) sudo systemctl restart php8.1-fpm - CentOS/RHEL系统:
直接安装MySQL原生驱动:
然后重启httpd或者PHP-FPM服务:sudo dnf install php-mysqlndsudo systemctl restart httpd - Windows系统:
找到你的PHP安装目录下的php.ini文件(比如XAMPP的话在xampp/php/php.ini),找到下面两行,把前面的分号;删掉:
保存后重启你的web服务器(比如XAMPP的Apache)。;extension=mysqli ;extension=pdo_mysql
2. 验证驱动是否生效
执行php -m命令,看输出里有没有mysqli和pdo_mysql这两个模块;或者写个简单的phpinfo.php文件(内容是<?php phpinfo(); ?>),访问它查看是否有MySQL相关的模块信息。
如果你用的是PostgreSQL
1. 安装并启用PostgreSQL扩展
- Ubuntu/Debian系统:
对应你的PHP版本安装:
安装后重启服务即可。sudo apt-get install php8.0-pgsql - CentOS/RHEL系统:
重启服务。sudo dnf install php-pgsql - Windows系统:
在php.ini里去掉下面两行的分号:
重启web服务器。;extension=pgsql ;extension=pdo_pgsql
2. 验证
同样用php -m检查,看输出里有没有pgsql和pdo_pgsql。
如果你用的是SQLite
SQLite一般PHP默认自带,但如果还是报错:
- Ubuntu/Debian系统:
sudo apt-get install php8.1-sqlite3 - Windows系统:
在php.ini里去掉这两行的分号:;extension=sqlite3 ;extension=pdo_sqlite - 验证:执行
php -m看sqlite3和pdo_sqlite是否存在。
通用排查小要点
- 确认你的Laravel项目根目录下的
.env文件配置正确,比如DB_CONNECTION要和你用的数据库对应(mysql/pgsql/sqlite),主机、用户名密码这些也别写错。 - 如果你是用命令行执行
php artisan migrate,要注意CLI用的PHP配置和web服务器的可能不一样!执行php --ini能看到CLI用的php.ini路径,去检查这个文件里的扩展是否启用了。 - 如果是Docker环境,要在Dockerfile里添加安装扩展的命令,比如MySQL的话加:
RUN docker-php-ext-install mysqli pdo_mysql
按照上面的步骤来,90%以上的情况都能解决这个问题。如果还是不行,可以把php -m的输出和你的.env配置(敏感信息打码)贴出来,我再帮你排查~
内容的提问来源于stack exchange,提问作者Bony Joesadi
相关产品推荐
相关产品推荐

