在控制器中获取环境值
Get environment value in controller
在我的 .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
文件中列出的所有变量都将加载到 $_ENV
PHP 超全局变量中。 Check out the Laravel configuration page.
$_ENV['yourkeyhere'];
试试:
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
您可以使用此格式(已在 Laravel 5.5 上测试)。在我的例子中,我用它来获取数据库连接的数据并在控制器上使用:
$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');
第二个参数可以为空,或者在DB_USERNAMEchild为空的情况下设置任何默认值。
您的 .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');
在blade.view
{{$_ENV['IMAP_HOSTNAME_TEST']}}
它在 Laravel 5.3+ 中不起作用,如果你想尝试从控制器访问值,如下所示。它总是 returns null
<?php
$value = env('MY_VALUE', 'default_value');
解决方案:相反,您需要在配置文件夹中创建一个文件,比如 values.php 然后
编写如下代码
文件values.php
<?php
return [
'myvalue' => env('MY_VALUE',null),
// Add other values as you wish
然后使用以下代码访问控制器中的值
<?php
$value = \Config::get('values.myvalue')
其中“values”是文件名后跟键“myvalue”。
最好将配置变量放在配置文件中。
对于你的情况,我建议将你的变量放在 config/mail.php 中,例如:
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
并通过
引用它们
config('mail.imap_hostname')
它首先尝试获取 .env 文件中的配置变量值,如果在 .env[= 中找不到变量值24=]文件,它会从文件config/mail.php.
中获取变量值
为了简化:只有配置文件可以访问environment variables - 然后传递它们。
步骤 1.) 将变量添加到 .env
文件中,例如,
EXAMPLE_URL="http://google.com"
步骤 2.) 在 config
文件夹中创建一个新文件,名称任意,例如,
config/example.php
步骤 3.) 在这个新文件中,我添加了一个返回的数组,其中包含该环境变量。
<?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');
}
}
最后,提交更改:
php artisan config:cache
--- 重要 --- 创建 [=] 后记得在控制台中输入 php artisan config:cache
53=] 文件。配置文件和变量已缓存,因此如果您进行更改,则需要刷新该缓存 - 这同样适用于正在更改/添加的 .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
];
您可以使用 'config(
从控制器调用变量。
无论您在 config 文件夹中使用什么文件。您需要使用那个 file name (without extension) + '.' + 'variable name' + ')'
。在当前情况下,您可以按如下方式调用变量。
$hostname = config('mail.imap_hostname_test');
由于在mail.php里面声明了变量,变量名是imap_hostname_test
,所以需要这样调用。如果你在 app.php
中声明这个变量,那么你应该调用
$hostname = config('app.imap_hostname_test');
正如@Rajib 所指出的,您无法使用 config('myVariable')
访问环境变量
- 您必须先将变量添加到 .env 文件中。
- 将变量添加到
config
目录中的某个配置文件。我一般加到config/app.php
- 完成后,将使用
Config
Facade 像 Config::get('fileWhichContainsVariable.Variable');
一样访问它们
可能您必须使用 php artisan config:clear
清除配置缓存
和
您还必须重新启动服务器。
在 config/app.php 文件中创建一个环境变量实例,如 'name' => env('APP_NAME', 'Laravel')
& 在你的控制器中称它为 config('app.name')
运行 遵循命令 php artisan config:cache
php artisan cache:clear
如果它不起作用。
在 Matt Stauffer 的书中,他建议在您的 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
接受的答案在 Laravel 5.2
版本之后不再有效:
要在控制器或(laravel 项目中的任何 php 文件)中获取环境值,您有两种情况:
案例 1(预定义键):如果您需要从 Laravel 项目创建的 .env
文件中获取值(默认 .env 文件), 或者通过你已经安装的第三方插件,并按照正确的安装程序安装,请参阅此答案以获取解释:
案例 2(未预定义 密钥 - 如果您需要生成新的自定义环境密钥):按照以下说明进行操作:
- 在
.env
文件中添加您的自定义密钥,例如我将添加此密钥:
UNIFONIC_APP_ID=xx2Erdasd7Ik7XfdesfaV9HX47
2. Add new php file in laravel_root/config
folder, for example i will add this file config/custom.php
and its contents like this:
return [
'unifonic_id' => env('UNIFONIC_APP_ID' , 'Here Default value will used of UNIFONIC_APP_ID not defined in .env file'),
];
- 运行 终端中的这些拖曳命令:
php artisan config:clear
php artisan config:cache
- 现在,在任何 php 文件(控制器、模型、视图等)中,您都可以调用此函数:
config('custom.unifonic_id');
其中custom
是在step 2
中生成的php文件的名称,unifonic_id
是在step 2
中定义的数组的键
如果 .env
中定义的 UNIFONIC_APP_ID
,这将 return 值,如果不存在,将 return 配置文件中定义的默认值 in step 2
Note 1: config file can return multi dimensions array, take look for
structers of config files which located in laravel_root/config
folder.
Note 2: you can modify file laravel_root/config/services.php
insted
of create new config file...
在我的 .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
文件中列出的所有变量都将加载到 $_ENV
PHP 超全局变量中。 Check out the Laravel configuration page.
$_ENV['yourkeyhere'];
试试:
<?php $hostname = env("IMAP_HOSTNAME_TEST", "somedefaultvalue"); ?>
您可以使用此格式(已在 Laravel 5.5 上测试)。在我的例子中,我用它来获取数据库连接的数据并在控制器上使用:
$User = env('DB_USERNAMEchild','');
$Pass = env('DB_PASSWORDchild','');
第二个参数可以为空,或者在DB_USERNAMEchild为空的情况下设置任何默认值。
您的 .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');
在blade.view
{{$_ENV['IMAP_HOSTNAME_TEST']}}
它在 Laravel 5.3+ 中不起作用,如果你想尝试从控制器访问值,如下所示。它总是 returns null
<?php
$value = env('MY_VALUE', 'default_value');
解决方案:相反,您需要在配置文件夹中创建一个文件,比如 values.php 然后 编写如下代码
文件values.php
<?php
return [
'myvalue' => env('MY_VALUE',null),
// Add other values as you wish
然后使用以下代码访问控制器中的值
<?php
$value = \Config::get('values.myvalue')
其中“values”是文件名后跟键“myvalue”。
最好将配置变量放在配置文件中。
对于你的情况,我建议将你的变量放在 config/mail.php 中,例如:
'imap_hostname' => env('IMAP_HOSTNAME_TEST', 'imap.gmail.com')
并通过
引用它们config('mail.imap_hostname')
它首先尝试获取 .env 文件中的配置变量值,如果在 .env[= 中找不到变量值24=]文件,它会从文件config/mail.php.
中获取变量值为了简化:只有配置文件可以访问environment variables - 然后传递它们。
步骤 1.) 将变量添加到 .env
文件中,例如,
EXAMPLE_URL="http://google.com"
步骤 2.) 在 config
文件夹中创建一个新文件,名称任意,例如,
config/example.php
步骤 3.) 在这个新文件中,我添加了一个返回的数组,其中包含该环境变量。
<?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');
}
}
最后,提交更改:
php artisan config:cache
--- 重要 --- 创建 [=] 后记得在控制台中输入 php artisan config:cache
53=] 文件。配置文件和变量已缓存,因此如果您进行更改,则需要刷新该缓存 - 这同样适用于正在更改/添加的 .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
];
您可以使用 'config(
从控制器调用变量。
无论您在 config 文件夹中使用什么文件。您需要使用那个 file name (without extension) + '.' + 'variable name' + ')'
。在当前情况下,您可以按如下方式调用变量。
$hostname = config('mail.imap_hostname_test');
由于在mail.php里面声明了变量,变量名是imap_hostname_test
,所以需要这样调用。如果你在 app.php
中声明这个变量,那么你应该调用
$hostname = config('app.imap_hostname_test');
正如@Rajib 所指出的,您无法使用 config('myVariable')
- 您必须先将变量添加到 .env 文件中。
- 将变量添加到
config
目录中的某个配置文件。我一般加到config/app.php
- 完成后,将使用
Config
Facade 像
Config::get('fileWhichContainsVariable.Variable');
一样访问它们
可能您必须使用 php artisan config:clear
清除配置缓存
和
您还必须重新启动服务器。
在 config/app.php 文件中创建一个环境变量实例,如 'name' => env('APP_NAME', 'Laravel')
& 在你的控制器中称它为 config('app.name')
运行 遵循命令 php artisan config:cache
php artisan cache:clear
如果它不起作用。
在 Matt Stauffer 的书中,他建议在您的 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
接受的答案在 Laravel 5.2
版本之后不再有效:
要在控制器或(laravel 项目中的任何 php 文件)中获取环境值,您有两种情况:
案例 1(预定义键):如果您需要从 Laravel 项目创建的 .env
文件中获取值(默认 .env 文件), 或者通过你已经安装的第三方插件,并按照正确的安装程序安装,请参阅此答案以获取解释:
案例 2(未预定义 密钥 - 如果您需要生成新的自定义环境密钥):按照以下说明进行操作:
- 在
.env
文件中添加您的自定义密钥,例如我将添加此密钥:
UNIFONIC_APP_ID=xx2Erdasd7Ik7XfdesfaV9HX47 2. Add new php file in
laravel_root/config
folder, for example i will add this fileconfig/custom.php
and its contents like this:
return [
'unifonic_id' => env('UNIFONIC_APP_ID' , 'Here Default value will used of UNIFONIC_APP_ID not defined in .env file'),
];
- 运行 终端中的这些拖曳命令:
php artisan config:clear php artisan config:cache
- 现在,在任何 php 文件(控制器、模型、视图等)中,您都可以调用此函数:
config('custom.unifonic_id');
其中custom
是在step 2
中生成的php文件的名称,unifonic_id
是在step 2
中定义的数组的键
如果 .env
中定义的 UNIFONIC_APP_ID
,这将 return 值,如果不存在,将 return 配置文件中定义的默认值 in step 2
Note 1: config file can return multi dimensions array, take look for structers of config files which located in
laravel_root/config
folder.
Note 2: you can modify file
laravel_root/config/services.php
insted of create new config file...