Laragon环境下OOP项目出现could not find driver错误求助
针对你在Laragon开发OOP项目时遇到的PDO MySQL驱动找不到的问题,以下是几个针对性的排查和解决步骤:
1. 确认当前项目使用的PHP版本对应的php.ini路径
首先要确保你修改的是Laragon当前激活的PHP版本的配置文件,而非系统或其他版本的。可以在项目中新建一个info.php文件,内容如下:
<?php phpinfo(); ?>
访问这个文件,找到Loaded Configuration File项,查看当前加载的php.ini的绝对路径,确保后续修改的是这个文件。
2. 彻底检查pdo_mysql扩展的启用状态
打开上述路径的php.ini文件,找到以下行:
;extension=pdo_mysql
去掉前面的分号;,确保该行变为:
extension=pdo_mysql
注意:PHP 7及以上版本不需要加.dll后缀,Laragon默认配置可能已去掉分号,但仍需仔细确认。
3. 验证PDO可用驱动列表
在项目中临时添加一段代码,检查PDO是否真的加载了MySQL驱动:
<?php var_dump(PDO::getAvailableDrivers()); ?>
执行后如果输出里没有mysql,说明驱动确实未加载,回到步骤2重新检查配置,或确认PHP版本是否兼容(Laragon一般自带适配的扩展,但仍需排查)。
4. 重启Laragon所有服务
修改php.ini后,必须重启Laragon的Web服务器(Apache/Nginx)和MySQL服务才能生效。右键点击Laragon托盘图标,选择Restart All即可。
5. 确认MySQL服务正常且数据库可访问
- 检查Laragon托盘图标中的MySQL状态,确保是绿色运行状态。
- 打开Laragon的
Database工具,用root账号、空密码连接127.0.0.1,确认oop数据库存在,且能正常查询users表。
6. 优化DSN连接字符串
尝试在DSN中明确指定MySQL端口(Laragon默认是3306),修改User模型中的PDO初始化代码:
static::$pdo = new \PDO( 'mysql:dbname=' . Constant::DB_NAME . ';host=' . Constant::DB_HOST . ';port=3306', Constant::DB_USERNAME, Constant::DB_PASSWORD, [ \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ] );
有时候端口未指定会导致连接异常。
7. 检查系统环境变量中的PHP版本
打开命令提示符(cmd),执行以下命令:
php -v
确认输出的PHP版本和Laragon当前使用的版本一致;再执行:
php -m
查看输出的模块列表中是否有pdo_mysql。如果版本不一致,说明系统优先使用了其他PHP版本,需要调整环境变量,将Laragon的PHP目录移到PATH最前面。
内容的提问来源于stack exchange,提问作者el_jefe213

