在Laravel

时间:2017-10-05 13:55:13

标签: php laravel

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

我试图通过在公共目录中的file_exists文件中使用index.php函数来检查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应用程序。也许我错过了一些东西?

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

3 个答案:

答案 0 :(得分:2)

在 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 步。)现在我们可以在控制器中设置 env 变量

<块引用>
public function url() {return config('example.url');}

最后,清除缓存:

<块引用>

PHP artisan config:cache

答案 1 :(得分:1)

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

在配置文档https://laravel.com/docs/5.5/configuration

中对此进行了密码解释
  

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

答案 2 :(得分:0)

尝试使用

php artisan config:clear