laravel5.5框架部署到阿里云虚拟主机.env文件中的配置获取不到问题
原因:laravel在加载.env文件配置中的配置到使用apache_setenv()(设置 Apache 子进程环境变量)和putenv(string $string)(设置环境变量的值,添加$string到服务器环境变量中)函数,阿里云虚拟机不支持这两个函数,所以添加失败导致.env中的配置使用env()(env()中调用getenv()获取一个环境变量的值)函数获取不到,在加载Dotenv\Loader类时(文件路径:vendor/vlucas/phpdotenv/srcLoader.php)
解决办法:找到env()函数(文件路径:vendor/laravel/framework/src/Illuminate/Support/helpers.php)
修改为
/**
* $_ENV 包含服务器端环境变量的数组
* 使用$_ENV需要在php.ini中配置variables_order = "GPCS" 参数中加上E,
* 如variables_order = "EGPCS"
* EGPCS是 Environment、Get、Post、Cookies、Server的缩写
* 判断$_ENV中的键值是否存在$key 存在返回true 不存在返回false
* */
// 验证$_ENV中是否存在key
$check = array_key_exists($key, $_ENV);
if($check === false){
// 不存在时返回默认值
return value($default);
}
// 存在时获取对应的key值
$value = $_ENV[$key];