laravel5.5框架部署到阿里云虚拟主机.env文件中的配置获取不到问题

    技术2022-07-11  111

    原因: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];

    Processed: 0.027, SQL: 9