【问题标题】:Cannot access env variables in Laravel无法访问 Laravel 中的环境变量
【发布时间】:2018-03-17 04:21:40
【问题描述】:

我在从 Laravel 的 env 文件中访问 env 变量时遇到问题。 该应用程序已托管到共享托管站点之一。 当我打印 APP_KEY 变量时,它返回空。

我尝试通过在公共目录中的index.php 文件中使用file_exists 函数来检查env 文件是否存在,它返回true 但我无法访问env 变量。 因此,由于空的 appkey 导致密码错误。

这发生在公共目录中index.php 文件中的此代码块之后:

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

当我打印$response->send() 时,它显示密码错误。

我在本地做了同样的事情,它显示了 appkey 值,没有密码错误。

我在共享主机站点中使用的文件与我本地的文件相同。这是我第一次托管 Laravel 应用程序。也许我错过了一些东西?

你知道为什么会这样吗?谢谢。

【问题讨论】:

  • 那么就运行php artisan key:generate ?
  • 但是应用程序已经被托管了。
  • 密钥刷新不会导致问题。
  • @Option 我认为密钥已经存在,但他无法从env 文件中获取它的值
  • 我在本地生成了另一个密钥,并在托管应用程序中粘贴了相同的密钥,但仍然相同,或者我做错了?

标签: php laravel


【解决方案1】:

可能是启用了配置缓存。在这种情况下,只有 env 目录中的 env 调用会返回一个值。

这在配置文档 https://laravel.com/docs/5.5/configuration 中有神秘的解释

如果您在部署过程中执行 config:cache 命令,您应该确保您只是从配置文件中调用 env 函数。

【讨论】:

  • 所以环境值只能在配置文件中调用?
  • 正确,因此请确保将您需要的所有 env 值放在配置文件中,以便您的应用程序可以使用它们。顺便说一句,您可以运行 php artisan config:clear 并查看您的 env 调用是否正常
  • 谢谢,这真的帮助了我。我整个上午都在寻找解决方案。现在是下午 3 点。
【解决方案2】:

尝试使用

php artisan config:clear

【讨论】:

    【解决方案3】:

    在 Laravel 8 中存在一个问题,您无法获取环境变量直接分配 env("URL")

    为了简化:

    第 1 步。)例如,将变量添加到 .env 文件中,

    URL="http://google.com"

    第 2 步。)在 config 文件夹中创建一个新文件,可以使用任意名称,例如,

    config/getURL.php

    第 3 步。)在这个新文件中,我添加了一个返回的数组,其中包含该环境变量。

    <?php return ['url' => env('URL') ];

    第 4 步。)因为我将其命名为“getURL”,所以我的配置“命名空间”现在是一个示例。所以现在,在我的控制器中,我可以访问这个变量:

    $url = \config('getURL.url');

    第 5 步。)现在您可以在控制器中设置环境变量

    public function url() {return config('example.url');}
    

    最后,清除缓存:

    PHP artisan config:cache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-11
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 2012-01-30
      • 2020-12-02
      • 1970-01-01
      相关资源
      最近更新 更多