Настроить соединение с базой данных Symfony из ini файла?
На сервере мне нужно развернуть приложение symfony 5.2.4, конфигурация базы данных определена в ini-файле, для которого путь задан как переменная среды.
То, как я сделал это прямо сейчас, - это запустить
composer dump-env dev
затем в
.env.local.php
, добавьте код для загрузки inifile, проанализируйте его, затем создайте URL-адрес моей базы данных и установите для DATABASE_URL это значение следующим образом:
$inifile = parse_ini_file($_SERVER["DB_INI_PATH"]);
$databaseurl = 'mysql://'.$inifile["user"].':'.$inifile["password"].'@'.$inifile["host"].':'.$inifile["port"].'/'.$inifile["db"];
Но это означает, что у меня есть код в этом файле, для которого нельзя управлять версиями (потому что он также содержит мое значение APP_SECRET), и каждый раз, когда мне нужно перенаправить свой env, мне нужно будет прочитать этот настраиваемый код.
Я не нашел подходящего места, чтобы добавить этот процесс декодирования ini-файла в свое приложение symfony, поэтому я ищу какие-либо советы о том, как это сделать, чтобы можно было версии.
1 ответ
Вы можете написать свою конфигурацию доктрины на php, и у вас будет доступ к переменным среды. Вы можете добавить свою логику в "config / packages / prod / doctrine.php". Пример в документации показывает, как установить
doctrine.dbal.url
перейдите сюда и щелкните вкладку php, чтобы просмотреть пример кода: https://symfony.com/doc/current/configuration.html#configuration-based-on-environment-variables