在控制器中获取环境值
问题的原因是为了在控制器中获取环境变量,需要通过配置文件来访问环境变量。解决方法是按照以下步骤进行操作:
步骤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文件中的环境变量,这些变量通常是安全敏感的。可以注意到,在我开头的文字中,我提到至少在回答这个问题的日期上,配置文件是唯一能够访问这些敏感的超级全局变量的文件。
在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来提交配置更改。