在我的.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 :(得分: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'
答案 7 :(得分:1)
@Rajib指出,您无法使用config('myVariable')
config
目录中的某些配置文件中。我通常会添加到config/app.php
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;