CodeIgniter框架出现mysqli_connect()未定义致命错误求助
报错排查方案
前置说明
该报错本质是当前PHP进程未成功加载mysqli扩展,你此前确认的扩展安装状态大概率是cli命令行模式的状态,和web请求使用的PHP配置不是同一套。
排查步骤
- 第一步:验证web环境扩展加载状态
新建phpinfo.php文件写入如下代码:<?php phpinfo(); ?>
放到站点根目录通过浏览器访问,搜索mysqli关键词,确认扩展状态为enabled。如果搜索不到该项,说明web环境用的php.ini未配置加载mysqli扩展。 - 第二步:修正php.ini配置
从phpinfo页面找到Loaded Configuration File项对应的php.ini文件路径,编辑该文件,找到extension=mysqli配置(Linux环境对应extension=mysqli.so,Windows环境对应extension=php_mysqli.dll),去掉行首的分号注释后保存。 - 第三步:确认扩展文件权限正常
从phpinfo页面找到extension_dir对应的目录路径,进入该目录确认对应mysqli扩展文件存在,且运行web服务的用户(如www、apache)有读取权限。 - 第四步:检查CodeIgniter框架配置
打开项目下application/config/database.php文件,确认数据库驱动配置为:$db['default']['dbdriver'] = 'mysqli';
禁止填写已废弃的mysql驱动值。 - 第五步:重启服务生效配置
根据你的运行环境重启对应服务:- PHP-FPM环境执行:
systemctl restart php7.4-fpm - Apache环境执行:
systemctl restart httpd
重启后再访问站点验证报错是否消失。
- PHP-FPM环境执行:
独立验证方法
如果以上步骤执行后仍报错,可以用独立脚本验证和框架是否有关,新建test_mysqli.php写入以下内容:
<?php // 替换为你实际的数据库配置 $conn = mysqli_connect('localhost', '数据库用户名', '数据库密码', '数据库名'); if (!$conn) { die('连接失败: ' . mysqli_connect_error()); } echo 'MySQLi连接正常';
浏览器访问该脚本,如果还是报相同错误,可直接确定是PHP环境的扩展加载问题,和CodeIgniter框架无关。
内容的提问来源于stack exchange,提问作者cahbs
相关产品推荐
相关产品推荐

