Composer 脚本忽略 Symfony 控制台环境变量

Composer scripts disregards Symfony console environment variable

我遇到了一个问题,即我的 Symfony 应用程序的构建过程失败,正如许多不同论坛(none 最近)所解释的那样。例如:

When doing composer install with --no-dev only the production packages are installed (as it should be). However when composer launches the symfony scripts they are launched in development modes and thus start throwing errors when AppKernel.php can not find packages needed for development. These scripts should also be executed in production mode!

Quote source

上面的 Github 问题已关闭,因为它显然可以通过将 SYMFONY_ENV env 变量设置为您选择的环境来解决:export SYMFONY_ENV=prod.

我已经做到了,并且调用 printenv 正确打印了变量。我什至可以手动调用 Symfony 控制台 php bin/console。它 prod 环境中启动。

成功了吗?看似,但不是...调用 composer install 仍然强制所有脚本在 dev 环境中启动。给出了什么?

根本原因似乎是环境变量没有被全局设置,所以无论用户命令最终 运行 作为,www-data 通过我的部署脚本,或者 root(当我从控制台调用 sudo composer?) 时,没有设置我用默认用户创建的环境变量。

/etc/environment 中的新行中添加 SYMFONY_ENV=prod,然后重新启动修复了问题,脚本现在 运行 在 prod 中。