在.env(dotenv)文件中使用PHP函数
我试图在.env文件中使用一个PHP函数,在我的例子中,它是在.env(dotenv)文件中使用PHP函数,php,laravel,phpdotenv,Php,Laravel,Phpdotenv,我试图在.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.exampl
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本机不受支持,但有没有办法/解决办法
另外,我使用的是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函数。该文件被设计为您的环境变量(来自操作系统)的回退,因此您不能在该文件上使用PHP代码。如果确实需要全局随机数,则可以使用全局变量执行类似操作:
global $rand;
$rand = rand(1,5);
然后,如果需要在主上下文之外使用数字(如在函数内部),则需要声明global$rand
:
function someFunction ()
{
global $rand;
doSomethingWithRand($rand);
}
但在我看来,这是一种丑陋的做法。根据你想要达到的目标,有更好的方法
更新
因为你用的是拉威尔。您可以在一些配置文件的/config/
目录下添加对rand()
函数的调用,例如:'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');
参考:在尝试运行此代码时,您将得到一个解析错误。您的数组缺少将值与键关联的
,如下所示:'PROTOCOL'=>“http”,
。谢谢!贝金纳的错误!嗯,它不起作用。我得到了错误500。我猜PHP代码不会像@GustavoStraube提到的那样在.env中工作。实际上,我使用了一个与Laravel4类似的.env。这是可行的。哦,我想在拉威尔5号,情况已经改变了。这是唯一可行的解决方案。谢谢你的解释。这是一个很好的书面回答。我不知道它是否有效,但我还是要投赞成票,先生。