Php 在控制器中获取环境值
在我的.env文件中,我有以下内容:Php 在控制器中获取环境值,php,laravel,laravel-5,config,Php,Laravel,Laravel 5,Config,在我的.env文件中,我有以下内容: IMAP_HOSTNAME_TEST=imap.gmail.com IMAP_USERNAME_TEST=myemail@gmail.com IMAP_PASSWORD_TEST=mypw 现在我想在我的控制器中使用它们。我尝试过这个,但没有任何结果: $hostname = config('IMAP_HOSTNAME_TEST'); $hostname变量等于null。如何在控制器中使用这些配置变量?当应用程序收到请求时,.env文件中列出的所有变量都
IMAP_HOSTNAME_TEST=imap.gmail.com
IMAP_USERNAME_TEST=myemail@gmail.com
IMAP_PASSWORD_TEST=mypw
现在我想在我的控制器中使用它们。我尝试过这个,但没有任何结果:
$hostname = config('IMAP_HOSTNAME_TEST');
$hostname变量等于null。如何在控制器中使用这些配置变量?当应用程序收到请求时,
.env
文件中列出的所有变量都将加载到$\u env
PHP超级全局中
尝试以下方法:
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
您可以使用此格式(在Laravel 5.5上测试)。在我的例子中,我使用它获取数据库连接的数据,并在控制器上使用:
$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');
第二个参数可以为null,或者在DB_USERNAMEchild为null的情况下设置任何默认值
您的.env文件可以是相同的:
DB_HOST=localhost
DB_DATABASE=FATHERBD
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASEchild=ZTEST
DB_USERNAMEchild=root
DB_PASSWORDchild=passwordofchild
在控制器中
$hostname = $_ENV['IMAP_HOSTNAME_TEST']; (or) $hostname = env('IMAP_HOSTNAME_TEST');
在刀片服务器视图中
{{$_ENV['IMAP_HOSTNAME_TEST']}}
如果您想尝试从如下控制器访问值,它在Laravel 5.3+中不起作用。它总是返回空值
最好将配置变量放入配置文件中
在您的情况下,我建议将变量放入config/mail.php中,如:
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
并通过
config('mail.imap_hostname')
它首先尝试在.env文件中获取配置变量值,如果在.env文件中找不到变量值,它将从文件config/mail.php中获取变量值,以简化:只有配置文件可以访问,然后再传递它们
步骤1。)例如,将变量添加到.env
文件中
EXAMPLE_URL="http://google.com"
config/example.php
namespace App\Http\Controllers;
use Config; // Added this line
class ExampleController extends Controller
{
public function url() {
return config('example.url');
}
}
步骤2。)在config
文件夹中创建一个新文件,例如,使用任何名称
EXAMPLE_URL="http://google.com"
config/example.php
namespace App\Http\Controllers;
use Config; // Added this line
class ExampleController extends Controller
{
public function url() {
return config('example.url');
}
}
步骤3。)在这个新文件中,我添加了一个返回的数组,其中包含该环境变量
<?php
return [
'url' => env('EXAMPLE_URL')
];
提示-如果添加请使用配置
在控制器顶部,不需要反斜杠(指定根命名空间)。比如说,
EXAMPLE_URL="http://google.com"
config/example.php
namespace App\Http\Controllers;
use Config; // Added this line
class ExampleController extends Controller
{
public function url() {
return config('example.url');
}
}
最后,提交更改:
php artisan config:cache
---重要---创建example.php文件后,请记住在控制台中输入php artisan config:cache
。配置文件和变量是缓存的,因此如果进行更改,则需要刷新该缓存-这同样适用于正在更改/添加到的.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'),
// You are hiding the value inside the configuration as well
];
您可以使用配置(
)从控制器调用变量。
在配置文件夹中使用的任何文件。您需要使用该文件名(不带扩展名)+'.+'变量名'+')
。在当前情况下,可以按如下方式调用变量
$hostname = config('mail.imap_hostname_test');
由于您在mail.php中声明了变量,并且变量名为imap\u hostname\u test
,因此需要这样调用它。如果在app.php
中声明此变量,则应调用
$hostname = config('app.imap_hostname_test');
正如@Rajib指出的,您不能使用config('myVariable')
必须首先将变量添加到.env文件中
将变量添加到config
目录中的某个配置文件中。我通常添加到config/app.php
完成后,将访问它们,如Config::get('fileWhichContainsVariable.Variable')代码>使用Config
Facade
您可能需要使用php-artisan-config:clear
及
您还必须重新启动服务器。在config/app.php文件中创建一个env变量的实例,如'name'=>env('app_name','Laravel')
&在您的控制器中,像config('app.name')
运行以下命令php artisan config:cache
php artisan cache:clear
,如果它不起作用。在马特·斯塔夫的书中,他建议在config/app.php
中创建一个数组,添加变量,然后在引用变量的任何地方:
$myvariable = new Namearray(config('fileWhichContainsVariable.array.ConfigKeyVariable'))
你试过这个方法吗?好吗?您可以将值添加到
.env
文件中
VALUE=somevalue
on the controller
$_ENV['VALUE']
or
env('VALUE')
如果不起作用,请运行此命令
php artisan config:clear
如果
env
不存在,则somedefaultvalue
的可能重复项可以是任何默认值。使用env()
可能会导致意外问题,请参阅Grant关于此问题的答案-。不适用于Laravel 5.5。请在Laravel 8^的config/app.php文件中找到Masum Ahmed Sarkardd的答案,这是一种简化形式,它会起作用<代码>'hostname'=env('IMAP_hostname_TEST')代码>不确定为什么这被否决。。。这是L5.3+的正确答案(大部分)。但是,使用示例文件名values.php
,实际上可以在控制器中将其引用为$value=config('values.myvalue')
不要忘记php artisan config:cache
提交配置更改。谢谢大家,这仍然有效。您将此代码、config/app.php
或控制器/视图放在哪里?这在laravel5.2
上对我有效,但在laravel5.3+
上似乎没有效果。由于您指定的是Laravel 5.5
,我一定是做错了什么?我已将此代码放在app/Http/ExampleController.phpphp artisan config:cache crash my上aplication@FelipeCastillo意味着您的应用程序在其配置中存在问题-因为该命令仅刷新cacheconfig()是helper函数,不需要use-Config代码>。使用use语句,您可以将别名Config
用于illumb\Support\Facades\Config::class
例如:Config::get('example.url')
@petermortensen@Grant,这是一个很好的例子