Symfony Command发送电子邮件,在树枝中缺少绝对URL

时间:2018-01-08 10:44:22

标签: php symfony docker cron

有一些问题涉及这个问题,但没有一个问题可以解决我的问题。这是在PHP 7.1 docker容器中运行的Symfony 2.8应用程序。

当命令以cron身份运行时,绝对URL在电子邮件中使用localhost。我在documentation here中尝试了两种建议 - 在命令本身上进行配置,在参数中进行全局配置。

一切正常,直到命令由cron运行 - 即使我手动运行相同的命令。例如,在主机上将以下内容运行到容器中会正确生成绝对URL:

docker-compose exec --user www-data application sh -c "cd /var/www/html && /usr/local/bin/php app/console my:command -e=stage"

但是我的cron正在恢复到localhost:

1-59/3 * * * * www-data cd /var/www/html && /usr/local/bin/php app/console my:command -e=stage

Cron在容器内运行。如果我以www-data打入容器并运行:/usr/local/bin/php app/console my:command -e=stage它也能正常运行,所以我不知道为什么它不能像crontab一样打球。

1 个答案:

答案 0 :(得分:0)

cron无法使用环境变量。因此,命令和参数使用的BASE_DOMAIN环境变量在由预定的cron任务运行时为null

要解决此问题,基本域作为参数传递给命令,主机在请求上下文中设置如下:

$context = $this->router->getContext();
$context->setHost($input->getArgument('host'));

然后更新cron以包含主机。