【问题标题】:Laravel env('APP_URL') is not returning the correct value for localhostLaravel env('APP_URL') 没有为 localhost 返回正确的值
【发布时间】:2019-11-05 17:02:24
【问题描述】:

当尝试从 Laravel 配置中检索 APP_URL 时,它返回错误的 URL 仅用于开发。

我的环境文件有以下内容:

APP_URL=http://127.0.0.1:9000

但是,当我调用 env('APP_URL') 时,它会返回给我:

'http://localhost'

这不适用于我当前的 docker 设置,它必须是 127.0.0.1:9000

在我的 config/app.php 文件中,我有以下内容:

'url' => env('APP_URL')

我尝试了php artisan config:cachephp artisan config:clear,但我仍然得到与http://localhost 相同的结果

有什么想法可以从 .env 或 config/app.php 以外的地方获取 http://localhost 吗?


认为值得注意的是使用config('app.url') 也会返回http://localhost

【问题讨论】:

  • 您是否对其他 env 值或仅此一个有同样的问题? env 文件是否命名正确/具有正确的权限?
  • 这怎么可能?通常这只是因为你正在缓存环境。但是,你说你已经运行了config:clear。那么,应该是你编辑了错误的.env 文件。
  • @nmfzone 这是因为如果应用程序处于开发模式,Laravel 会加载 .env.dev 文件(未记录)。请参阅下面的答案。
  • 如果我在代码中使用 route(),它会返回 localhost。如果我在 CLI 中使用 route(),它会返回正确的域。 app['url'] 设置为“mydomain.us-1.sharedwithexpose.com。APP_URL 在 env 文件中设置为相同。但是为什么 route() 会在 artisan tinker 中返回正确的域和 url,但从代码调用时却不这样做?任何建议?我没有 .env.dev 文件。我确实有 .env.example。我在那里更改了 APP_URL 无济于事。我也在使用 docker,但我使用 BeyondCode 中的 Expose 来共享我的本地主机站点与客户。

标签: laravel laravel-5 laravel-6


【解决方案1】:

我发现在加载 .env 文件时有一个未记录的功能。如果您的项目文件夹中有一个 .env.dev 文件,如果您的应用程序处于开发模式,它将将此配置加载到其他所有内容上。据记录, .env.testing 用于测试,这是有道理的,但它也适用于带有 .env.dev 的开发人员

我正在处理的应用程序有一个 .env.dev,正是这个文件中包含 http://localhost 字符串。

【讨论】:

  • 这太有趣了,你能链接你在哪里找到这个信息吗?
  • 这就是我的意思。您正在编辑错误的 .env 文件。它记录在 4.2 here fyi 中。如果你曾经使用过 Laravel 4.2,你就会熟悉它。
  • @nmfzone 我在第 5 版之前从未使用过 Laravel,所以我不知道这个功能的遗留问题。
  • @Alberto 我在项目中尝试不同的东西时偶然发现了它。我认为它没有记录在任何地方,当然不在 5.x 和 6.x 文档中。 nmfzone 链接到版本 4 的一些文档,虽然不同(使用 .php 扩展名),但它确实提到每个环境有不同的 .env。
【解决方案2】:

“localhost”可能是默认值。您的错误表明根本没有读取 .env 文件。确保您没有编辑 .example.env,检查是否可以访问其他 env 变量,检查拼写错误,检查 .env 的文件权限以及它是否位于项目的根文件夹中。

【讨论】:

    猜你喜欢
    • 2017-01-30
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2019-12-10
    • 2019-05-05
    • 2018-01-21
    相关资源
    最近更新 更多