在composer安装的应用程序/控制台中,getenv(';SYMFONY#u ENV';)为空,但在其他地方可以
要在生产环境中部署Symfony应用程序,我在bash脚本中运行以下命令:在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
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,它是否有效?不幸的是,它会出现同样的问题