Скрипты Composer игнорируют переменную среды консоли Symfony

Я столкнулся с проблемой, когда процесс сборки моего приложения Symfony завершается сбоем, как объяснялось на многих разных форумах (ни одного недавнего). Например:

При установке композитора с --no-dev устанавливаются только производственные пакеты (как и должно быть). Однако, когда композитор запускает скрипты symfony, они запускаются в режимах разработки и, таким образом, начинают выдавать ошибки, когда AppKernel.php не может найти пакеты, необходимые для разработки. Эти скрипты также должны выполняться в рабочем режиме!

Источник цитаты

Вышеупомянутая проблема с Github закрыта, поскольку, по-видимому, ее можно исправить, установив переменную SYMFONY_ENV env в среду по вашему выбору: export SYMFONY_ENV=prod.

Я сделал это, и вызов printenv правильно печатает переменную. Я даже могу вызвать консоль Symfony php bin/console вручную. и он запустится в среде prod.

Успех? Вроде бы, но нет... Вызов composer install по-прежнему заставляет все скрипты запускаться в dev окружении. Что дает?


person bblue    schedule 20.03.2017    source источник
comment
ты пробовал composer install --no-dev --env=prod?   -  person LBA    schedule 20.03.2017
comment
@LBA --env не является опцией композитора   -  person bblue    schedule 20.03.2017
comment
Глупый я. Какая часть сценария композитора не работает?   -  person LBA    schedule 20.03.2017
comment
Сценарий на самом деле не терпит неудачу, но встроенные консольные сценарии Symfony в composer.json запускаются в dev, вызывая все виды хаоса в дальнейшем. Но это всего лишь следствие, а не первопричина. Примером может служить скрипт очистки кеша Symfony; опустив --no-dev в composer, скрипт выполнится, но очистит кеш dev, а не prod, как я ожидал.   -  person bblue    schedule 20.03.2017


Ответы (1)


Основная причина, по-видимому, заключается в том, что переменная среды не была установлена ​​​​глобально, поэтому для любого пользователя, от имени которого выполнялись команды, www-data через мой сценарий развертывания или root (как я назвал sudo composer?) из консоли, переменная среды не была установлена который я создал с моим пользователем по умолчанию.

Добавление SYMFONY_ENV=prod в новую строку в /etc/environment, а затем перезапуск устранили проблему, и теперь сценарии выполняются в prod.

person bblue    schedule 20.03.2017