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

PHP使用Dotenv读取.env数据库配置出现Undefined array key报错如何解决

解决方案
  • 路径修正:你当前加载.env的路径拼接缺少目录分隔符,导致Dotenv无法找到.env文件,变量自然无法加载。将Dotenv实例创建代码修改为:
    $dotenv = \Dotenv\Dotenv::createImmutable(__DIR__ . '/../../../');
    
    同时确认.env文件存放在项目根目录(和vendor目录同级,即从config.php所在的includes/database/目录向上跳3级的位置)。
  • 变量名一致性校验:你贴出的代码中读取的是$_ENV["NAME"],但报错提示缺失的是USERNAME键,有两种可能性:
    1. 你.env文件中定义的变量名和代码中调用的变量名不匹配,注意变量名大小写完全敏感,比如.env写USERNAME=xxx就要用$_ENV['USERNAME']读取,写NAME=xxx就要用$_ENV['NAME']读取
    2. 你项目其他位置的代码调用了不存在的$_ENV['USERNAME'],全局搜索对应键名排查即可
  • 变量存在性校验:加载完.env后增加强制校验代码,提前定位缺失变量:
    $dotenv->load();
    // 新增校验行
    $dotenv->required(['LOCALHOST', 'NAME', 'PASSWORD', 'DATABASE']);
    
    若Dotenv找不到对应变量会直接抛出明确的异常,比PHP原生的数组键不存在提示更容易排查。
  • 权限检查:确认.env文件的读取权限对web运行用户(如www-data、apache、nginx)开放,权限不足也会导致Dotenv读取不到文件内容。
  • 超全局兼容:部分PHP配置默认关闭了$_ENV超全局变量,你可以尝试用$_SERVER读取变量,或者修改php.ini配置开启variables_order = "EGPCS"。

内容的提问来源于stack exchange,提问作者ΝΙΚΟΛΑΟΣ ΚΟΥΚΗΣ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:27:03