PHP无法获取.env文件设置的值

第一:$_ENV会为空,其原因通常是php的配置文件php.ini的配置项为:
;variables_order
;Default Value: “EGPCS”
;Development Value: “GPCS”
;Production Value: “GPCS”
要想让$_ENV的值不为空:
;variables_order
Default Value: “EGPCS”
;Development Value: “GPCS”
;Production Value: “GPCS”

第二:Env不显示的问题,需要在base.php中 putenv的同时,将数据也写入$_ENV,就可以解决了

打开thinkphp目录下的base.php文件修改。41行左右

if (is_file(ROOT_PATH . '.env')) {
    $env = parse_ini_file(ROOT_PATH . '.env', true);
    foreach ($env as $key => $val) {
        $name = ENV_PREFIX . strtoupper($key);
        if (is_array($val)) {
            foreach ($val as $k => $v) {
                $item = $name . '_' . strtoupper($k);
                putenv("$item=$v");
                //加入这一句
                $_ENV[$name]=$val;
            }
        } else {
            putenv("$name=$val");
            //加入这一句
            $_ENV[$name]=$val;
        }
    }
}

(45 Posts)