Symfony в Docker: % env (csv: ...) % делает Framework.trusted_headers Crash с ошибкой «Got Array»Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Symfony в Docker: % env (csv: ...) % делает Framework.trusted_headers Crash с ошибкой «Got Array»

Сообщение Anonymous »

При использовании Symfony в контейнере %env (csv: ...) %, кажется, ломается при заполнении опции конфигурации, который ожидает массив. Например, в Config/Packages/Framework.yaml :

Код: Выделить всё

# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
trusted_proxies: '%env(string:APP_TRUSTED_PROXIES)%'
trusted_headers: '%env(csv:APP_TRUSTED_HEADERS)%'
< /code>
Поскольку файлы .env не читаются в моей настройке в контейнер, я устанавливаю app_trusted_headers через Docker Compose в виде запятой.docker compose exec php php bin/console debug:container --env-vars | grep APP_
< /code>
Я получаю: < /p>
In BaseNode.php line 496:

Invalid type for path "framework.trusted_headers.0". Expected one of "bool"
, "int", "float", "string", but got "array".
< /code>
trusted_headers
ожидает массива , но Symfony жалуется, что он получает массив .
Как воспроизвести? class = "Lang-Bash PrettyPrint-Override">

Код: Выделить всё

git clone https://github.com/dunglas/symfony-docker
cd symfony-docker
docker compose build --pull --no-cache
docker compose up --wait
< /code>
Then edit the config/packages/framework.yaml and add:
framework:
trusted_headers: '%env(csv:APP_TRUSTED_HEADERS)%'
< /code>
In compose.yaml, define the env var. I tried the following (each variant tested separately):
service:
php:
environment:
APP_TRUSTED_HEADERS: forwarded,x-forward-port # does NOT WORK
APP_TRUSTED_HEADERS: forwarded # does NOT WORK
APP_TRUSTED_HEADERS: "forwarded" # does NOT WORK
APP_TRUSTED_HEADERS: "'forwarded'" # does NOT WORK
APP_TRUSTED_HEADERS: "${APP_TRUSTED_HEADERS}" # with the host env set

< /code>
All variants result in the same error.
I read "Environment variable processors", this post about "Environment variables in a dockerized Symfony" and How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy
What am I doing wrong, and how should APP_TRUSTED_HEADERS be passed so that %env(csv:...)%
решается в плоский массив строк? И я считаю, что это не дубликат: я не пытаюсь пройти массив через Compose. Проблема в том, что даже с простой строкой в ​​контейнере Env, Symfony в конечном итоге обрабатывает структуру.trusted_headers.0 в качестве массива (то есть массив). Таким образом, этот вопрос о обработке Symfony/Dotenv CSV в контейнерной установке, а не Docker Compose Interpolation.

Подробнее здесь: https://stackoverflow.com/questions/797 ... sh-with-go
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»