在composer安装的应用程序/控制台中,getenv(';SYMFONY#u ENV';)为空,但在其他地方可以

在composer安装的应用程序/控制台中,getenv(';SYMFONY#u ENV';)为空,但在其他地方可以,symfony,environment-variables,composer-php,Symfony,Environment Variables,Composer Php,要在生产环境中部署Symfony应用程序,我在bash脚本中运行以下命令: php composer.phar install --no-dev --optimize-autoloader 我得到了以下错误: 剧本 Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache 处理安装后cmd事件以异常终止 执行“'cache:clear--no warmup'”命令时出错 这是因为应用程序/控制台中的getenv('S

要在生产环境中部署Symfony应用程序,我在bash脚本中运行以下命令:

php composer.phar install --no-dev --optimize-autoloader
我得到了以下错误:

剧本 Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache 处理安装后cmd事件以异常终止

执行“'cache:clear--no warmup'”命令时出错

这是因为应用程序/控制台中的getenv('SYMFONY_ENV')在执行composer.json post install cmd中的命令时返回空值。因此,$env值未设置为prod,而是设置为dev(默认值)

但是,SYMFONY_ENV值正常

在终端中,如果我运行:

printenv SYMFONY_ENV
它打印prod

如果我跑步:

php -r "print_r(getenv('SYMFONY_ENV'));"
它打印prod


我错过了什么或做错了什么?

我刚刚意识到我在跑步

sudo php composer.phar安装--无开发--优化自动加载程序

而不是

php composer.phar安装--无开发--优化自动加载程序

在我的例子(Ubuntu14.04)中,我在/etc/environment中定义了SYMFONY_ENV,我认为它对所有用户都是可访问的,但sudo却不是这样。我解决了在没有sudo的情况下运行命令的问题(因为没有理由这样做)


另一个解决方案可能是运行
sudo-E php…
以保留此处建议的用户环境:

如果您在composer安装之前键入export-SYMFONY\u ENV=prod,它是否有效?不幸的是,它会出现同样的问题