【发布时间】:2020-03-25 10:31:53
【问题描述】:
部署脚本尝试安装资产时出现此错误:
(安装 PHP 7.2,Symfony 4.4)
[Symfony\Component\Process\Exception\ProcessFailedException]
The command "ssh -A root@vps.net -p 21 '(export APP_ENV=prod; cd /var/www-deploy/site.com/releases/20191129224025
&& php /var/www-deploy/site.com/releases/20191129224025/bin/console assets:install /var/www-deploy/site.com/releases/20191129224025/public --symlink --no-debug --env=prod)'" failed.
Exit Code: 1(General error)
Working directory: /Users/coil/Sites/site.com
Output:
================
Error Output:
================
In EnvVarProcessor.php line 162:
Environment variable not found: "APP_SERVER".
我已经把.env文件放到了共享文件中,所以在创建release目录的时候就复制了,这个文件就在目录里面。
public function configure(): DefaultConfiguration
{
return $this->getConfigBuilder()
// ...
->sharedFilesAndDirs(['.env'])
// ...
}
我还尝试将环境变量放在部署用户的.bashrc 文件中:
printenv | grep -i app
APP_DEBUG=0
APP_SECRET=whatever
APP_ENV=prod
APP_SERVER=prod
所以,我不明白,为什么仍然找不到环境变量。以及为什么不从.env 文件中获取它们。
如果我中断部署并且我在服务器上手动运行相同的命令,它运行良好。谢谢。
[编辑 2019-11-30] 我想我明白了,运行命令时,有一个 APP_ENV 的导出完成。而且,如果应用程序检测到这个环境变量,它将跳过.env file。所以,我需要避免设置这个环境变量,或者我必须设置所有而不是只设置一个。
【问题讨论】:
标签: php deployment environment-variables symfony4