getenv('SYMFONY_ENV') 在作曲家安装的应用程序/控制台中为空,但在其他地方正常



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

php composer.phar install --no-dev --optimize-autoloader

我得到了以下错误:

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

执行"cache:clear--no warm up"命令时出错。

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

但是,SYMFONY_ENV值正常。

在终端中,如果我运行:

printenv SYMFONY_ENV

它打印产品

如果我运行:

php -r "print_r(getenv('SYMFONY_ENV'));"

它打印产品

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

我刚刚意识到我正在运行

sudo php composer.phar install --no-dev --optimize-autoloader

而不是

php composer.phar install --no-dev --optimize-autoloader

在我的案例(ubuntu 14.04)中,我在/etc/environment中定义了SYMFONY_ENV,我认为所有用户都可以访问它,但sudo的情况并非如此。我解决了在没有sudo的情况下运行命令的问题(因为它没有任何理由)。

另一种解决方案可以是运行sudo -E php ...来保留用户环境,如下所示:https://askubuntu.com/questions/161924/how-do-i-set-persistent-environment-variables-for-root

相关内容

  • 没有找到相关文章

最新更新