获取控制器中的环境值

时间:2015-12-14 09:08:27

标签: php laravel config laravel-5.1

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

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

现在我想在我的控制器中使用它们。我试过这个但没有结果:

$hostname = config('IMAP_HOSTNAME_TEST');

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

14 个答案:

答案 0 :(得分:50)

尝试

<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>

答案 1 :(得分:26)

如果您想尝试从控制器访问值,如下所示在Laravel 5.3+中不起作用,则返回始终为null

<?php

$value=env('MY_VALUE','default_value');

解决方案:您需要在config文件夹中创建一个文件..say values.php然后 写下面的代码

values.php

<?php

return [

    'myvalue' => env('MY_VALUE',null),

    //add other values as you want

]

然后使用以下代码访问控制器中的值

<?php


$value=\Config::get('credentials.myvalue')

其中“凭据”是后跟“myvalue”键的文件名 希望它有所帮助

答案 2 :(得分:12)

我想我会添加一个答案,以简化过去所说的内容。只有配置文件才能访问环境变量-然后将其传递。

步骤1。)将变量添加到.env文件中,即

EXAMPLE_URL="http://google.com"

第2步。)config文件夹中创建一个新文件,其名称为

config/example.php

步骤3。)在此新文件中,我添加了一个返回的数组,其中包含该env变量。

<?php
return [
  'url' => env('EXAMPLE_URL')
];

步骤4。)因为我将其命名为“ example”,所以我的配置“ namespace”现在是example。所以现在,在我的控制器中,我可以使用以下命令访问此变量:

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

提示-如果在控制器顶部添加use Config;,则不需要反斜杠(用于指定根名称空间)。即。

namespace App\Http\Controllers;   
use Config; // Added this line

class ExampleController extends Controller
{
    public function url() {
        return config('example.url');
    }
}

---重要--- 创建完example.php文件后,请记住进入控制台php artisan config:cache。配置文件和变量已缓存,因此,如果您进行更改,则需要刷新该缓存-更改/添加到.env文件的情况也是如此。

答案 3 :(得分:10)

当您的应用程序收到请求时,.env文件中列出的所有变量都将加载到$_ENV PHP超级全局变量中。     Checkout laravel configuration page

$_ENV['yourkeyhere'];

答案 4 :(得分:3)

<强> InController

$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');

在blade.view

{{$_ENV['IMAP_HOSTNAME_TEST']}}

答案 5 :(得分:2)

你可以使用这种格式,(在Laravel 5.5上测试)在我的情况下我用来获取数据库连接的数据并在Controller上使用:

$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');

第二个参数可以为null,或者在DB_USERNAMEchild为空时设置任何默认值。

你.env文件可以是相同的:

DB_HOST=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password

DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild

答案 6 :(得分:2)

在Laravel Controlller中

public static function mail($param)
{
    //$_ENV['yourkeyhere'];
    $mailgunsecret = env('MAILGUN_SECRET');
    $mailguurl = env('MAILGUN_DOMAIN');

}

在Laravel Blade文件中

@if (env('APP_ENV')!='Production')
    Enviroment Test
@endif

must run this commands

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

示例:在刀片中访问Laravel .env变量

APP_ENV=local
APP_KEY=////
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_GOOGLE_MAPS=////
APP_OVERHEID_IO=////

{{ env('APP_ENV') }} // returns 'local' 
{{ env('APP_URL') }} // returns 'http://localhost' 

Get environment value in controller

答案 7 :(得分:1)

@Rajib指出,您无法使用config('myVariable')

访问环境变量
  1. 您必须先将变量添加到.env文件。
  2. 将变量添加到config目录中的某些配置文件中。我通常会添加到config/app.php
  3. 完成后,将使用Config::get('fileWhichContainsVariable.Variable');门面像Config一样访问它们

可能您必须使用php artisan config:clear清除配置缓存 和 您还必须重新启动服务器。

答案 8 :(得分:1)

您可以将该值添加到您的 .env 文件中

 VALUE=somevalue
on the controller 
$_ENV['VALUE']
or
env('VALUE')

如果它不起作用,请运行此命令

php artisan config:clear

答案 9 :(得分:0)

将配置变量放入配置文件中是个好主意。

对于您而言,建议您像

一样将变量放入 config / mail.php

'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')

并通过

引用它们
config('mail.imap_hostname')

它首先尝试在 .env 文件中获取配置变量值,如果在 .env 文件中找不到变量值,它将获取变量值来自 config / mail.php

答案 10 :(得分:0)

您不能像这样访问env变量。

您编写的.env文件内部

IMAP_HOSTNAME_TEST=imap.gmail.com  // i am okay with this

下一个config文件夹中有一个mail.php,您可以使用此文件进行编码。当您使用邮件功能时。您也可以使用其他文件。

return [

//..... other declarations
'imap_hostname_test' => env('IMAP_HOSTNAME_TEST'),

//您也将值隐藏在config中

];

您可以使用'config(
无论您在config文件夹中使用什么文件。您需要使用该文件名(不带扩展名)+'。 +'变量名'+')'。在当前情况下,您可以按以下方式调用变量。

$hostname = config('mail.imap_hostname_test');

因为您在mail.php中声明了变量,并且变量名是imap_hostname_test。您需要这样打电话。如果在app.php中声明此变量,则应调用

$hostname = config('app.imap_hostname_test');

答案 11 :(得分:0)

在config / app.php文件中,创建一个环境变量的实例,例如'name' => env('APP_NAME', 'Laravel') &在您的控制器中将其命名为config('app.name')

如果无法运行,请运行以下命令php artisan config:cache php artisan cache:clear

答案 12 :(得分:0)

在 Matt Stauffer 的书中,他建议在您的 config/app.php 中创建一个数组来添加变量,然后在您引用它的任何地方添加:

$myvariable = new Namearray(config('fileWhichContainsVariable.array.ConfigKeyVariable'))

尝试过这个解决方案吗?好吗?

答案 13 :(得分:-2)

可能没有关系,但它可能会帮助某人....在Laravel中只是dd(配置(&#39; app.env&#39;)); 而且你会看到当地的&#39;或者&#39;生产&#39;