Команда secrets:set
Команда secrets:set создаёт новый секрет
или перезаписывает значение уже существующего
секрета в хранилище секретов приложения. Первым
параметром передаётся имя секрета. Если секрет
уже существует, Symfony запросит подтверждение
на его перезапись, если не указан флаг
--force. Значение секрета вводится
интерактивно, либо передаётся через STDIN,
либо задаётся опцией --random для
генерации случайной строки.
Синтаксис
php bin/console secrets:set [options] [--] <name> [<value>]
Аргументы
Команда принимает следующие аргументы:
name Имя секрета (обязательный аргумент)
value Значение секрета (необязательный аргумент)
Опции
Команда поддерживает следующие опции:
--random Сгенерировать случайное значение секрета
--force, -f Перезаписать секрет без подтверждения
--local Записать секрет в локальное хранилище
--env=ENV Записать секрет для указанного окружения
Пример
Давайте создадим новый секрет с именем
DATABASE_PASSWORD. Команда запросит
значение секрета интерактивно:
php bin/console secrets:set DATABASE_PASSWORD
Результат выполнения команды:
Please type the value of the secret:
>
[OK] Secret "DATABASE_PASSWORD" was set successfully.
Пример
Давайте сгенерируем случайное значение
секрета при помощи опции --random:
php bin/console secrets:set APP_SECRET --random
Результат выполнения команды:
[OK] Secret "APP_SECRET" was set successfully.
Пример
Давайте перезапишем существующий секрет
DATABASE_PASSWORD без интерактивного
подтверждения при помощи флага --force:
php bin/console secrets:set DATABASE_PASSWORD --force
Результат выполнения команды:
Please type the value of the secret:
>
[OK] Secret "DATABASE_PASSWORD" was set successfully.
Пример
Давайте прочитаем значение секрета в
контроллере через параметр окружения
%env(DATABASE_PASSWORD)%:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class SecretController extends AbstractController
{
#[Route('/secret', name: 'secret_show')]
public function show(string $databasePassword): Response
{
return new Response($databasePassword);
}
}
?>
Параметр $databasePassword связывается
с секретом в конфигурации сервиса:
services:
App\Controller\SecretController:
arguments:
$databasePassword: '%env(DATABASE_PASSWORD)%'
Результат выполнения кода для секрета
со значением 'abcde':
abcde
Смотрите также
-
команда
secrets:list,
которая выводит список всех секретов -
команда
secrets:decrypt-to-local,
которая расшифровывает секреты в локальный файл -
команда
debug:dotenv,
которая показывает переменные окружения -
команда
debug:container,
которая выводит информацию о сервисах