要在生产上部署我的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