Laravel - 访问 .env 变量

11

我尝试从我的根目录中的.env文件中获取环境变量,使用以下代码:

Route::get('/test', function () {
    return "value is". getenv('APP_ENV');
});

Route::get('/test', function () {
    return "it is". env('APP_ENV');
});

它在 .env 文件中。

APP_NAME=Laravel
APP_ENV=local

我该如何获取它的访问权限?

7个回答

22

使用 Laravel 时,应避免在配置文件之外使用环境变量。

在您的配置文件中,您可以使用环境变量,例如在 config/app.php 中:

'env' => env('APP_ENV', 'production'),

然后您可以使用配置助手访问此内容:config('app.env')

这使您可以缓存配置并仍然访问这些值,因为一旦缓存您的配置,env('APP_ENV')不再起作用。 如docs所述:

"如果您在部署过程中执行config:cache命令,则应确保仅从配置文件内部调用env函数。一旦缓存了配置,将不会加载.env文件,并且所有对env函数的调用都将返回null。"


你在设置 otherwise 'production' 的地方,它也可以是 'OTHER_ENV_VAR' 吗? - Pathros
1
我不明白为什么你不能嵌套env调用:env('APP_ENV', env('OTHER_ENV_VAR', 'ultimate_default')) - Devon

10

使用env('ENVKEY')函数。 有时候会因为缓存导致出现问题,不要忘记清除缓存。

php artisan config:clear
php artisan cache:clear
composer dump-autoload

更多信息请查看 文档


应用程序缓存不会影响环境变量,只会影响配置缓存。 - Devon
可能不是,但有些东西不起作用。例如,您可以检查此链接https://dev59.com/nVgQ5IYBdhLWcg3wRBzK的许多情况。 - user7747472
没问题,但是唯一相关的是你的第一个命令。如果你认为其他两个命令与此问题有关,我建议你进行研究。 - Devon
我认为这很相关,因此我加了进来。谢谢你的信息,不过我会进行研究。 - user7747472
谢谢,这让我花了一个小时才弄明白。关于 Laravel 配置是新的。 - zero8

9
Route::get('/test', function () {
    return "it is".config('app.name');
});

2

只需在命令提示符中运行以下命令。

php artisan config:cache

然后

php artisan config:clear

然后

php artisan cache:clear


1
Laravel提供了一个全局的辅助函数来完成这种任务。
$val = config('app.something');

你也可以使用以下方法设置新的值。
config(['app.something' => 'cat']);

参考

对于你的特定任务,它将是

$val = config('app.env');

或者全局确定环境
$environment = App::environment();

我希望这有所帮助,祝你愉快!


这是一个空的 Route::get('/test', function () { return "环境 ". config('APP_ENV'); }); 我需要在别处设置吗? - LeBlaireau
在Javascript(blade文件)中怎么样? - Pathros

1
根据Laravel文档环境配置所述,
所有在此文件中列出的变量将在您的应用程序接收请求时加载到$_ENV PHP超全局变量中。您可以使用env助手从这些变量中检索值。
因此,可以通过以下方式访问变量:
$_ENV['envKey'];

1
 App::environment()

try this please


我已经尝试了env('APP_ENV'),$_ENV('APP_ENV')但结果为空。这个函数给了我结果。干杯 :) - saad siddiqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接