laravel-websockets 在本地运行获取的是 .env 而不是 .env.local 的配置

laravel 新项目默认会有 .env.example 和 .env.local 文件。当环境变量 APP_ENV=local 时加载 .env.local 的配置, 此外通过 php artisan serve 启动的 web 服务 和 laravel-sail 默认的 web服务 会读取 .env 文件中的 APP_ENV 并写入到环境变量中(laravel-sail 默认的 web服务 就是 php artisan serve)。 而且一般 .env.local 是 sail 环境下的各种配置, 一般不用动。 然后复制一个 .env.example 为 .env,然后在 .env 基础上进行修改, 作为线上环境的配置文件。

今天下班早,打开了我很久没开机的台式机 (一般都用笔记本),拉了一个自己的项目下来跑一跑。一切都很舒服, 然后舒服没一会儿。 发现我的 python 客户端一点反应没有, 一开 debug 发现收不到广播。 然后各种找 bug , 包括检查 docker 端口映射, 重新 build 容器,等等。 找了一晚上 bug , 最后发现修改 .env 中的 websocket配置就好了 。我以为config/broadcasting.php 中的 env() 获取的应该是 .env.local 结果却是 .env 。:sob:

又查了下资料, 貌似是因为 laravel-websockets 是通过终端的命令启动的,终端命令如果要指定 APP_ENV 需要添加 –env 选项。 如果添加 –env=local, env() 拿到的就是 .env.local 里面的配置信息, 否则为 .env :cry:

php artisan websockets:serve --env=local
    protected function checkForSpecificEnvironmentFile($app)
    {
        if ($app->runningInConsole() &&
            ($input = new ArgvInput)->hasParameterOption('--env') &&
            $this->setEnvironmentFilePath($app, $app->environmentFile().'.'.$input->getParameterOption('--env'))) {
            return;
        }

        $environment = Env::get('APP_ENV');

        if (! $environment) {
            return;
        }

        $this->setEnvironmentFilePath(
            $app, $app->environmentFile().'.'.$environment
        );
    }

laravel-websockets 在本地运行获取的是 .env 而不是 .env.local 的配置

laravel-websockets 在本地运行获取的是 .env 而不是 .env.local 的配置

laravel-websockets 本地获取的是 .env 而不是 .env.local 的配置

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 22
陈先生

APP_ENV=local 时加载 .env.local 的配置 多谢科普,我一直都不知道有这个设定。。

不过你可以展开说说这个 .env.local 的加载过程么?因为我之前看 dotEnv 的时候没看到这块。

1年前 评论
徵羽宫 (楼主) 1年前
陈先生 (作者) 1年前
徵羽宫 (楼主) 1年前
徵羽宫 (楼主) 1年前
陈先生

回复太难写了,开新回复了。

  1. 你提供的函数位置你的 .env 文件并未加载

  2. 这里的行为是确认你要加载的 env 文件的位置

  3. 最终要读取的文件是根据你环境变量设定的。并不会跟随你的 .env 文件确认。

可以换位思考一下,我要先读取 env 文件,然后发现可能存在环境文件,我再去读取 env.环境 文件,你觉得这合理么?

1年前 评论
徵羽宫 (楼主) 1年前
陈先生 (作者) 1年前
徵羽宫 (楼主) 1年前
陈先生 (作者) 1年前
徵羽宫 (楼主) 1年前
徵羽宫 (楼主) 1年前
陈先生 (作者) 1年前
徵羽宫 (楼主) 1年前
陈先生 (作者) 1年前
徵羽宫 (楼主) 1年前
陈先生 (作者) 1年前

检查下你环境变量是否有设置这个 APP_ENV

1年前 评论
徵羽宫 (楼主) 1年前
Diudiuuuu (作者) 1年前
徵羽宫 (楼主) 1年前
徵羽宫 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!