2

我正在尝试在 .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 不是本机支持的,但有什么方法/解决方法吗?

PS我正在使用Laravel 5。

4

2 回答 2

2

.env纯文本文件不支持 PHP 函数。该文件被设计为您的环境变量(来自操作系统)的后备,因此您不能在其上使用 PHP 代码。如果你真的需要一个全局随机数,你可以使用一个全局变量来做类似的事情,而不是:

global $rand;
$rand = rand(1,5);

然后,您需要在主上下文之外使用您的号码(如内部函数),您需要声明global $rand

function someFunction ()
{
    global $rand;
    doSomethingWithRand($rand);
}

但在我看来,这是一种丑陋的方法。根据您要实现的目标,有更好的方法可以做到这一点。

更新

由于您使用的是 Laravel。您可以在dirrand()下的某些配置文件中添加对函数的调用,例如: . 然后要访问您的随机数,您应该使用:/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

于 2015-09-15T12:56:33.207 回答
1

您可以通过使用类似这样的良好语法在您的环境文件中使用 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}",
);
于 2015-09-15T12:43:18.120 回答