在 .env (dotenv) 文件中使用 PHP 函数
Using PHP functions in .env (dotenv) file
我正在尝试在 .env 文件中使用 PHP 函数,在我的例子中是 rand()
。
这是我在 .env 中试图实现的目标;
PROTOCOL="http"
DOMAIN="example.com"
URI="www.{$DOMAIN}"
RAND=rand(1,5)
CDN_URI="cdn{$RAND}.{$DOMAIN}"
CDN_URL="{$PROTOCOL}://{$CDN_URI}"
如您所见,我正在尝试生成从 1 到 5 的随机整数,它们代表 CDN 子域,这样在一个请求中我会得到 http://cdn2.example.com
,在另一个请求中我会得到 http://cdn4.example.com
等等上。
我想在 .env 中使用 PHP 本身不受支持,但有什么方法/解决方法吗?
P.S。我正在使用 Laravel 5.
您可以在环境文件中使用 PHP,方法是使用像这样的语法:
<?php
return array(
'PROTOCOL' => "http",
'DOMAIN' => "example.com",
'URI' => "www.{$DOMAIN}",
'RAND' => rand(1,5),
'CDN_URI' => "cdn{$RAND}.{$DOMAIN}",
'CDN_URL' => "{$PROTOCOL}://{$CDN_URI}",
);
.env
文件为纯文本,不支持 PHP 函数。此文件被设计为您的环境变量(来自 OS)的后备,因此您不能在其上使用 PHP 代码。如果你真的需要一个全局随机数,你可以使用一个全局变量来做类似的事情,而不是:
global $rand;
$rand = rand(1,5);
然后你需要在主要上下文之外使用你的号码的地方(比如在函数内部),你需要声明 global $rand
:
function someFunction ()
{
global $rand;
doSomethingWithRand($rand);
}
但我认为这是一种丑陋的方法。根据您想要实现的目标,有更好的方法可以做到这一点。
更新
因为您正在使用 Laravel。您可以在某些配置文件中添加对 rand()
函数的调用,在 /config/
目录下,例如:'rand' => rand(1,5),
。然后要访问您的随机数,您应该使用:
// If your config was set inside /config/app.php.
config('app.rand');
// OR
// If your config was set inside /config/services.php, for instance.
config('services.rand');
参考:http://laravel.com/docs/5.1/installation#accessing-configuration-values
我正在尝试在 .env 文件中使用 PHP 函数,在我的例子中是 rand()
。
这是我在 .env 中试图实现的目标;
PROTOCOL="http"
DOMAIN="example.com"
URI="www.{$DOMAIN}"
RAND=rand(1,5)
CDN_URI="cdn{$RAND}.{$DOMAIN}"
CDN_URL="{$PROTOCOL}://{$CDN_URI}"
如您所见,我正在尝试生成从 1 到 5 的随机整数,它们代表 CDN 子域,这样在一个请求中我会得到 http://cdn2.example.com
,在另一个请求中我会得到 http://cdn4.example.com
等等上。
我想在 .env 中使用 PHP 本身不受支持,但有什么方法/解决方法吗?
P.S。我正在使用 Laravel 5.
您可以在环境文件中使用 PHP,方法是使用像这样的语法:
<?php
return array(
'PROTOCOL' => "http",
'DOMAIN' => "example.com",
'URI' => "www.{$DOMAIN}",
'RAND' => rand(1,5),
'CDN_URI' => "cdn{$RAND}.{$DOMAIN}",
'CDN_URL' => "{$PROTOCOL}://{$CDN_URI}",
);
.env
文件为纯文本,不支持 PHP 函数。此文件被设计为您的环境变量(来自 OS)的后备,因此您不能在其上使用 PHP 代码。如果你真的需要一个全局随机数,你可以使用一个全局变量来做类似的事情,而不是:
global $rand;
$rand = rand(1,5);
然后你需要在主要上下文之外使用你的号码的地方(比如在函数内部),你需要声明 global $rand
:
function someFunction ()
{
global $rand;
doSomethingWithRand($rand);
}
但我认为这是一种丑陋的方法。根据您想要实现的目标,有更好的方法可以做到这一点。
更新
因为您正在使用 Laravel。您可以在某些配置文件中添加对 rand()
函数的调用,在 /config/
目录下,例如:'rand' => rand(1,5),
。然后要访问您的随机数,您应该使用:
// If your config was set inside /config/app.php.
config('app.rand');
// OR
// If your config was set inside /config/services.php, for instance.
config('services.rand');
参考:http://laravel.com/docs/5.1/installation#accessing-configuration-values