在控制器中获取环境值

5 浏览
0 Comments

在控制器中获取环境值

在我的.env文件中,我有以下内容:

IMAP_HOSTNAME_TEST=imap.gmail.com
IMAP_USERNAME_TEST=myemail@gmail.com
IMAP_PASSWORD_TEST=mypw

现在我想在我的控制器中使用它们。我尝试了以下方法,但没有任何结果:

$hostname = config('IMAP_HOSTNAME_TEST');

$hostname变量等于null。我该如何在控制器中使用这些配置变量?

0
0 Comments

问题的原因是为了在控制器中获取环境变量,需要通过配置文件来访问环境变量。解决方法是按照以下步骤进行操作:

步骤1:在.env文件中添加变量,例如:

EXAMPLE_URL="http://google.com"

步骤2:在config文件夹中创建一个新文件,可以随意命名,例如:

config/example.php

步骤3:在新文件中返回一个包含环境变量的数组,例如:

return [

'url' => env('EXAMPLE_URL')

];

步骤4:在控制器中通过配置的命名空间来访问这个变量,例如:

$url = config('example.url');

提示:如果在控制器的顶部添加了"use Config;",就不需要使用反斜杠来指定根命名空间。例如:

namespace App\Http\Controllers;

use Config; // 添加这一行

class ExampleController extends Controller

{

public function url() {

return config('example.url');

}

}

最后,提交更改:

php artisan config:cache

重要提示:记得在创建example.php文件后,在控制台输入"php artisan config:cache"来刷新配置。配置文件和变量会被缓存,所以如果做了更改,需要清除缓存。同样,对.env文件的更改/添加也适用这个情况。

php artisan config:cache崩溃我的应用程序,意味着您的应用程序在配置方面有问题,因为该命令只会清除缓存。

config()是一个帮助函数,不需要"use Config;"。使用use语句,可以使用别名Config来表示Illuminate\Support\Facades\Config::class,例如:

Config::get('example.url')

env()帮助函数只能访问存储在.env文件中的环境变量,这些变量通常是安全敏感的。可以注意到,在我开头的文字中,我提到至少在回答这个问题的日期上,配置文件是唯一能够访问这些敏感的超级全局变量的文件。

0
0 Comments

问题的出现原因是使用env()函数获取环境变量的值可能会导致意外问题。

解决方法是在Laravel 5.5版本中不起作用,需要按照Masum Ahmed Sarkar的答案进行解决。在Laravel 8及更高版本中,可以通过在config/app.php文件中添加以下代码来解决该问题:'hostname' = env('IMAP_HOSTNAME_TEST');

0
0 Comments

在Laravel 5.3+中,如果您希望像下面的代码一样在控制器中访问值,它将不起作用并且始终返回null。

<?php
    $value = env('MY_VALUE', 'default_value');

解决方法是,在配置文件夹中创建一个文件,比如values.php,然后按照下面的代码编写。

文件 values.php

<?php
    return [
        'myvalue' => env('MY_VALUE',null),
        // 添加其他值

然后在控制器中使用以下代码访问该值。

<?php
    $value = \Config::get('values.myvalue')

其中,"values"是文件名,后面跟着键"myvalue"。

不确定为什么会有人对此进行投票... 这是L5.3+的正确答案(大部分)。但是使用您的示例文件名values.php,您实际上在控制器中引用它的方式应为$value = config('values.myvalue');。

不要忘记运行php artisan config:cache来提交配置更改。

0