You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到生产服务器后出现Class 'CodeIgniter\Database\MYSQLI\Connection'未找到错误

CodeIgniter部署到生产服务器后找不到MYSQLI连接类的问题

问题详情

本地运行正常,部署到生产服务器后出现以下错误:

CRITICAL - 2022-11-20 19:29:19 --> Class 'CodeIgniter\Database\MYSQLI\Connection' not found
in SYSTEMPATH/Database/Database.php on line 136.
1 SYSTEMPATH/Database/Database.php(56): CodeIgniter\Database\Database->initDriver('MYSQLI', 'CodeIgniter\\Database\\MYSQLI\\Connection', [...])
2 SYSTEMPATH/Database/Config.php(78): CodeIgniter\Database\Database->load([...], 'default')
3 SYSTEMPATH/Model.php(137): CodeIgniter\Database\Config::connect('default')
4 SYSTEMPATH/Config/Factories.php(126): CodeIgniter\Model->__construct(null)
5 SYSTEMPATH/Config/Factories.php(83): CodeIgniter\Config\Factories::__callStatic('models', [...])
6 SYSTEMPATH/Common.php(817): CodeIgniter\Config\Factories::models('App\\Models\\UsersModel', [...], null)
7 APPPATH/Controllers/Auth.php(99): model('App\\Models\\UsersModel')
8 SYSTEMPATH/CodeIgniter.php(902): App\Controllers\Auth->createNewUser()
9 SYSTEMPATH/CodeIgniter.php(457): CodeIgniter\CodeIgniter->runController(Object(App\Controllers\Auth))
10 SYSTEMPATH/CodeIgniter.php(340): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false)

.env配置

database.default.hostname = 'hostname.net'
database.default.database = 'database'
database.default.username = 'username'
database.default.password = 'password'
database.default.DBDriver = MYSQLI
database.default.port = 3306

服务器文件结构

- root
  - codeigniter_framework
    - app
    - system
    - writable
    - .env
  - public_html
    - assets
    - index.php
    - .htaccess

已完成操作

  • 确认system/Database/MYSQLI目录下存在Connection.php文件
  • 更新public_html/index.php,添加代码:require FCPATH . '../codeigniter_framework/app/Config/Paths.php';
  • 反复核对数据库凭据无误
  • 当前处于开发环境

排查与解决方案

1. 检查文件/目录大小写(重点)

生产服务器多为Linux系统,严格区分文件名大小写,而本地Windows/macOS默认不区分。CodeIgniter的命名空间是CodeIgniter\Database\MYSQLI,对应服务器上的目录必须是全大写的MYSQLI,不能是小写的mysqli。

登录服务器确认system/Database/下的目录名是否为MYSQLI,如果是小写需立即重命名。

2. 修正Paths配置路径

仅在index.php引入Paths.php不够,需确保Paths类的路径配置准确。打开codeigniter_framework/app/Config/Paths.php,检查核心目录的路径设置:

public $systemDirectory = __DIR__ . '/../../system';
public $appDirectory     = __DIR__ . '/../';
public $writableDirectory = __DIR__ . '/../../writable';

相对路径可能因index.php在public_html下出现偏差,建议直接使用服务器绝对路径:

public $systemDirectory = '/root/codeigniter_framework/system';
public $appDirectory     = '/root/codeigniter_framework/app';
public $writableDirectory = '/root/codeigniter_framework/writable';

3. 验证PHP mysqli扩展是否安装

生产服务器可能未启用mysqli扩展。创建一个phpinfo.php文件放在public_html下:

<?php phpinfo(); ?>

访问该文件,搜索mysqli关键字,确认扩展已安装并启用。若未安装,联系服务器管理员完成安装或启用配置。

4. 清除缓存文件

CodeIgniter开发环境会缓存类映射,部署后需清理缓存:

  • 删除writable/cache/下的所有文件
  • 删除writable/session/下的所有文件
  • 若服务器开启OPcache,重启PHP服务或清除OPcache缓存

5. 检查自动加载配置

打开app/Config/Autoload.php,确认PSR-4配置中包含CodeIgniter核心命名空间:

public $psr4 = [
    APP_NAMESPACE => APPPATH,
    'CodeIgniter' => SYSTEMPATH,
];

确保'CodeIgniter' => SYSTEMPATH这一行存在且路径正确。


内容的提问来源于stack exchange,提问作者Wouter Bosch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:50:46