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

CodeIgniter 3.1.6通过.env加载数据库配置遇内部服务器错误

解决CodeIgniter 3.1.6中通过.env加载数据库配置的问题

问题根源

CodeIgniter 3.1.6原生不支持.env文件和env()函数——这个函数是CodeIgniter 4才引入的特性。直接调用env()会触发“调用未定义函数”的致命错误,导致内部服务器错误。

解决方案:手动实现.env加载

通过PHP原生函数解析.env文件,将配置导入项目,具体步骤如下:

1. 确认.env文件位置与内容

将.env放在项目根目录(与application、system文件夹同级),填入实际数据库配置:

database.default.hostname = localhost
database.default.database = your_database_name
database.default.username = your_db_user
database.default.password = your_db_password
database.default.DBDriver = mysqli

注意:给.env设置权限为600,禁止外部访问,避免敏感信息泄露。

2. 在入口文件加载.env配置

打开项目根目录的index.php,在文件最顶部添加解析代码:

// 加载.env配置文件
$envFile = FCPATH . '.env';
if (file_exists($envFile)) {
    // 解析为多维数组,保留分组结构
    $envConfig = parse_ini_file($envFile, true);
    
    // 将配置转为大写常量,方便调用
    foreach ($envConfig as $group => $items) {
        foreach ($items as $key => $value) {
            $constantName = strtoupper(str_replace('.', '_', "$group.$key"));
            define($constantName, $value);
        }
    }
}

3. 修改database.php引用配置

打开application/config/database.php,替换env()调用为定义好的常量:

$db['default'] = array(
    'DSN'      => '',
    'hostname' => DATABASE_DEFAULT_HOSTNAME,
    'username' => DATABASE_DEFAULT_USERNAME,
    'password' => DATABASE_DEFAULT_PASSWORD,
    'database' => DATABASE_DEFAULT_DATABASE,
    'DBDriver' => DATABASE_DEFAULT_DBDRIVER,
    // 保留其他默认配置项(如DBPrefix、pConnect等)
);

替代方案:使用全局数组引用

如果不想定义常量,可在application/config/config.php顶部加载.env并存入全局数组:

$envFile = FCPATH . '.env';
if (file_exists($envFile)) {
    $GLOBALS['env_config'] = parse_ini_file($envFile, true);
}

然后在database.php中直接调用:

$env = $GLOBALS['env_config'];
$db['default'] = array(
    'DSN'      => '',
    'hostname' => $env['database']['default']['hostname'],
    'username' => $env['database']['default']['username'],
    'password' => $env['database']['default']['password'],
    'database' => $env['database']['default']['database'],
    'DBDriver' => $env['database']['default']['DBDriver'],
    // 其他配置项
);

验证

保存修改后重启服务器,内部服务器错误会消失,数据库将通过.env配置正常连接。

内容的提问来源于stack exchange,提问作者Buddhima Chamaranga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:52:39