【问题标题】:Composer scripts disregards Symfony console environment variableComposer 脚本忽略 Symfony 控制台环境变量
【发布时间】:2017-03-20 15:52:19
【问题描述】:

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

当使用 --no-dev 进行作曲家安装时,仅生产包 已安装(应该如此)。然而,当作曲家启动 symfony 脚本它们在开发模式下启动并因此启动 当 AppKernel.php 找不到所需的包时抛出错误 发展。这些脚本也应该在生产模式下执行!

Quote source

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

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

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

【问题讨论】:

  • 你试过composer install --no-dev --env=prod吗?
  • @LBA --env 不是作曲家选项
  • 愚蠢的我。作曲家脚本的哪一部分失败了?
  • 脚本并没有真正失败,但是 composer.json 中嵌入的 Symfony 控制台脚本在 dev 中启动,从而对下游造成了各种破坏。但这只是结果,而不是根本原因。一个例子是 Symfony 的缓存清除脚本;通过在作曲家中省略 --no-dev 脚本将执行,但它会清除 dev 缓存,而不是我预期的 prod。

标签: symfony composer-php environment-variables symfony-console


【解决方案1】:

根本原因似乎是环境变量未全局设置,因此无论命令最终以何种用户身份运行,www-data 通过我的部署脚本,或root(我称之为sudo composer?)来自控制台,没有设置我使用默认用户创建的环境变量。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-17
    • 2012-09-05
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多