Laravel 4 Mail ::队列没有使用正确的环境

时间:2015-07-04 02:55:50

标签: php email url laravel laravel-4

我已经在这个网站上工作了一段时间,刚刚结束并希望“上线”。我的生产服务器中有两个环境:分段和生产。这两种环境似乎都运行良好,每种环境都有自己的配置。

我遇到的奇怪问题是当使用Mail :: queue发送电子邮件时,邮件类正在拾取的视图是登台环境中的视图而不是生产中的视图,这似乎也是让班级认为它在临时环境中。因此,收到的电子邮件中的所有URL(在视图中配置为URL :: to('route'))都指向登台环境而不是生产。因此,如果暂存类似于staging.domain.com和生产www.domain.com,那么从生产环境发送的电子邮件中的链接是staging.domain.com(相反情况不会发生)

网站中的其他链接不会发生这种情况,只会发送电子邮件。

我无法弄明白这一点,我希望周围的人可以帮助我!

谢谢!

PS:我已经尝试清除存储文件夹中的视图,使用工匠缓存清除缓存:清除

2 个答案:

答案 0 :(得分:0)

由于没有与排队作业关联的HTTP请求,因此必须从配置设置获取应用程序URL。此配置设置是url配置文件中的app.php密钥。

我的猜测是您已将url文件中的app/config/app.php密钥设置为staging.domain.com

您可以通过在app/config目录中使用环境名称创建子目录来覆盖每个环境的配置文件。我更喜欢将php文件单独留在app/config目录中,并对环境特定的配置文件进行任何配置更改。

例如,您的问题的一个解决方案是创建以下文件(假设您的环境名称是" staging"" production"):

应用/配置/分段/ app.php

return array(
    'url' => 'http://staging.domain.com',
);

应用/配置/生产/ app.php

return array(
    'url' => 'http://www.domain.com',
);

您可以阅读有关环境配置here的更多信息。

答案 1 :(得分:0)

问题与 supervisord 配置有关。基本上只有一个队列,它是暂存的。

通过使用生产队列信息更新 supervisord.conf 解决了该问题。