Я пытаюсь использовать функцию PHP в файле .env, который 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
и так далее.
Я думаю, что использование PHP в .env не поддерживается изначально, но есть ли способ / обходной путь?
Постскриптум Я использую Laravel 5.
.env
Файл, как обычный текст, не имеет поддержки функций PHP. Этот файл был разработан как запасной вариант для переменных среды (из ОС), поэтому вы не можете использовать 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
Вы можете использовать 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}",
);