访问刀片中的Laravel .env变量

Ann*_*ine 61 php laravel

我试图获取一些我存储在我的.env文件中的API密钥,以便在刀片javascript中使用.我添加了两个键,如:

APP_ENV=local
APP_KEY=////
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_GOOGLE_MAPS=////
APP_OVERHEID_IO=////
Run Code Online (Sandbox Code Playgroud)

在刀片中,我需要使用Google Maps API和OverheidIO API密钥.我已经尝试获取其中一个默认的.env变量,以防万一我将自定义.env变量格式化错误:

{{ env('APP.ENV') }} // nothing
{{ env('APP_ENV') }} // nothing
{{ env('APP_ENV'), 'test' }} // returns 'test' 
Run Code Online (Sandbox Code Playgroud)

有人可以帮我调用刀片中的google maps api和overheidio api key吗?

Lea*_*ner 81

如果您的Laravel在.env或数据库文件夹中进行了一些修改后或由于任何其他修改后未按预期工作,则有五个最重要的命令.以下是完整说明:https: //www.youtube.com/watch?v = Q1ynDMC8UGg

php artisan config:clear
php artisan cache:clear
composer dump-autoload
php artisan view:clear
php artisan route:clear
Run Code Online (Sandbox Code Playgroud)

  • PHP的工匠配置:清除为我修复 (3认同)
  • 好东西,但注意, env('APP_ENV') 在生产中会失败,请参阅 /sf/answers/4033887021/ (3认同)
  • 这不应该是公认的答案,当您启用缓存时,“env”变量不起作用,并且一旦您重新启用缓存,它们就会停止工作,这是有原因的,请参见下文 (3认同)

小智 23

我通过以下方式实现它:

@if (env('APP_ENV')!='Production')
Enviroment Test
@endif
Run Code Online (Sandbox Code Playgroud)

我的建议是执行以下命令: composer self-update

  • 如果启用了配置缓存,这将失败。改用`config` (2认同)
  • 可以写成 `@if(App::environment('product'))` (2认同)
  • 从 Laravel 7.1+ 开始,您可以使用 @env(['development','local','etc etc']) .... @endenv (2认同)
  • 整个问题是关于为什么 env('APP_ENV')` 不适用于 OP。为什么你认为将它放在“if()”语句中会改变这一点? (2认同)

小智 12

您应该只.env直接访问配置文件中的值,然后使用config()helper 从配置文件中的任何地方(控制器、视图)访问它们

例如:

.env

TEST_URL=http://test
Run Code Online (Sandbox Code Playgroud)

配置/app.php

return [
   'test_url' => env('TEST_URL','http://default.url')
];
Run Code Online (Sandbox Code Playgroud)

资源/视图/welcome.blade.php

{{ config('app.test_url')}}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅laravel 文档中的配置缓存


Jna*_*jan 9

如果您想获取应用程序的环境,请尝试以下操作:

{{App::environment()}}
Run Code Online (Sandbox Code Playgroud)

我没有尝试过其他变量。


Att*_*lop 9

Laravel 7.11 开始,您可以在刀片模板中使用@env('')@production()指令:

@env('staging')
    // The application is running in "staging"...
@endenv

@env(['staging', 'production'])
    // The application is running in "staging" or "production"...
@endenv
Run Code Online (Sandbox Code Playgroud)

或者

@production
    // Production specific content...
@endproduction
Run Code Online (Sandbox Code Playgroud)

另请参阅Laravel Blade 文档


Luc*_* C. 5

php artisan config:clear
Run Code Online (Sandbox Code Playgroud)

应该修复它


Ale*_*lex 5

在 config/ 文件夹以外的任何地方使用 env() 都会导致问题。在那里使用 env ,然后在应用程序的其他部分使用 config ()


ndb*_*erg 5

很重要

所有的env()如:在生产环境中env('APP_ENV')调用“ 将不起作用”(使用时php artisan config:cache

使用什么?
-仅在配置文件中使用env()
-使用App :: environment()检查环境(.env中的APP_ENV)。
-将config('app.var')用于所有其他环境变量,例如。config('app.debug')
-为您自己的ENV变量创建自己的配置文件。示例:
在您的.env中:

MY_VALUE=foo
Run Code Online (Sandbox Code Playgroud)

例子config app / myconfig.php

return [
    'myvalue' => env('MY_VALUE', 'bar'), // 'bar' is default if MY_VALUE is missing in .env
];
Run Code Online (Sandbox Code Playgroud)

访问您的代码:

config('myconfig.myvalue') // will result in 'foo'
Run Code Online (Sandbox Code Playgroud)

更多详细信息,请点击这里

  • @ndberg 在这里说的是关键:“仅在配置文件中使用 env()”。这是这个问题的最佳答案。 (4认同)

小智 5

在这里获取值:config/app.php


在刀片中:

{{ config('app.name', 'default value here') }}
Run Code Online (Sandbox Code Playgroud)

在类/控制器中:

config('app.name', 'default value here')
Run Code Online (Sandbox Code Playgroud)


JR *_*rne 5

这是文档的链接:https : //laravel.com/docs/6.x/configuration#retrieving-environment-configuration

在下面的示例中,当我在我的开发环境中时,我会吐出实际的错误,但如果在任何其他环境中,则会给出一个通用消息。

@if(App::environment('development'))
    Error: {{ $record->s_error }}
@else
    XML Parsing Error - Please double check that your file is formatted correctly.
@endif
Run Code Online (Sandbox Code Playgroud)


Pus*_*pak 5

{{ env('APP_ENV') }}
Run Code Online (Sandbox Code Playgroud)

**如果不起作用,请运行以下命令。这对我有用。你可以试试。该命令将清除配置缓存。**

php artisan config:clear
Run Code Online (Sandbox Code Playgroud)