#php #symfony #docker #environment-variables
#php #symfony #docker #переменные среды
Вопрос:
Я создаю приложение, используя Symfony 4 и Docker. В моем файле .env у меня есть следующая строка:
DEVICE_CREATION_SECRET=123456
… и в моих сервисах.в файле yaml у меня есть следующее определение:
VMSApplicationDigitalRetailHandlerDeviceForwardHandler:
arguments:
- env(DEVICE_CREATION_SECRET)
… который, как я ожидаю, передаст мой секрет (123456) моему классу, поскольку у меня есть это в этом классе:
public function __construct(string $deviceCreationSecret)
{
$this->deviceCreationSecret = $deviceCreationSecret;
}
Но когда я запускаю свое приложение и выводю значение, я получаю env(DEVICE_CREATION_SECRET)
вместо моего secret (123456). Что мне нужно, чтобы получить доступ к этому секрету?
Комментарии:
1. Попробуйте
'%env(DEVICE_CREATION_SECRET)%'
?2. Для
env(VARIABLE)
установки переменной используется Cause .
Ответ №1:
Я думаю, что этот способ должен сработать:
VMSApplicationDigitalRetailHandlerDeviceForwardHandler:
arguments:
- '%env(DEVICE_CREATION_SECRET)%'
https://symfony.com/doc/current/configuration/external_parameters.html
Ответ №2:
Перейдите к services.yml:
parameters:
DEVICE_CREATION_SECRET: '%env(DEVICE_CREATION_SECRET)%'
После этого в классе введите parameterBagInterface:
use SymfonyComponentDependencyInjectionParameterBagParameterBagInterface;
private $deviceCreationSecret;
private $params;
public function __construct(
string $deviceCreationSecret,
ParameterBagInterface $params
)
{
$this->deviceCreationSecret = $deviceCreationSecret;
$this->params = $params;
}
И затем, для параметра get:
$this->params->get('DEVICE_CREATION_SECRET');