Magento - cron 作业脚本正在运行,但 Magento 订单确认电子邮件未发送

Posted

技术标签:

【中文标题】Magento - cron 作业脚本正在运行,但 Magento 订单确认电子邮件未发送【英文标题】:Magento - cron job script is running, but Magento order confirmation emails are not sending 【发布时间】:2015-11-09 14:30:24 【问题描述】:

正如Magento documentation 所述,您需要在您的网络服务器上设置一个 cron 作业,以便发送订单确认电子邮件等内容,如下所示:

* * * * * /bin/sh /absolute/path/to/magento/cron.sh

这是一个非常简单的 cron 作业。问题是,自动化任务没有在 Magento 中完成。就好像脚本没有由 cron 作业运行。因此,订单确认电子邮件没有发送(在所有其他 Magento 自动化任务中)。

我已经安装了AOE Scheduler 扩展来仔细检查 Magento 中的每个自动化任务,并查看任务何时完成(或者,在这种情况下,当它们没有完成时)。包括core_email_queue_send_all 在内的所有任务都没有以 1 分钟间隔完成。

现在这是奇怪的部分。如果我只是在我的网络浏览器mydomain.com/cron.php 上加载cron.php 脚本(cron.sh 触发cron.php),Magento 自动任务都会执行!而且由于脚本在我手动运行时是这样工作的,而且我知道 cron 作业正在工作......我无法弄清楚!

请帮忙!

其他详情

以下是我知道 cron 作业是否正常工作的方法 — 我通过创建一个 PHP 脚本在我的服务器上测试了 cron 作业,该脚本使用mail() 发送基本电子邮件,并运行与上述类似的 cron 作业以每分钟执行一次— cron 作业正常运行。每次 cron 作业运行时,我都会收到来自服务器的 MAILTO 电子邮件。我看不到任何错误。

我也可以在 cron 作业中执行这个确切的命令...

/bin/sh /absolute/path/to/magento/cron.sh

...当我 SSH 进入终端时,它成功运行脚本,Magento 运行所有自动化任务。它只是不会在 cron 作业中每分钟都运行!

这太奇怪了,我想不通.... 归根结底,如果客户无法结账并收到确认电子邮件,我在这家 Magento 商店所做的所有工作都是没有意义的。

任何建议将不胜感激。

更新

我能够通过使用wget 命令调用cron.php 来解决问题,但这仍然不是一个永久的解决方案。

wget -O /dev/null -q http://domain.com/cron.php

虽然它现在在技术上可以正常工作,但 Magento 的文档特别建议运行 cron.sh,而不是 cron.php。仍然希望具体回答为什么 cron 作业无法运行 cron.shsh

【问题讨论】:

/home/[server_username]/public_html/cron.sh 的第一行添加到您的问题中。 【参考方案1】:

我会尝试的一些步骤:

在终端:

检查你的 cron 日志:

tail -f /var/log/cron

你能看到正在运行的命令吗?

检查 cronjobs 是否存在:

crontab -l

检查cron用户是否对该文件有可执行权限,如果没有:

chmod +x file.sh

cron 正在运行吗?检查进程是否正在运行:

pgrep crond

【讨论】:

chmod +x cron.sh 已修复!我不敢相信我没想到要找这个。【参考方案2】:

如果出现错误,您将收到一封包含错误记录的电子邮件, 但这需要先配置。您可以在此处查看解决方案 https://www.phase2technology.com/blog/how-to-enable-local-smtp-server-postfix-on-os-x-leopard/

在这种情况下,这个解决方案在这里帮助了我http://support.xtento.com/wiki/Setting_up_the_Magento_cronjob

我的环境是 OSX El Capitain,启用了本地邮件后缀,以便在我设置用于测试 Magento 商店中的订单的 gmail 帐户上发送 cron 状态电子邮件,用于在本地测试 Magento 的 MAMP 以及安装和配置的 AOE Scheduler Magento 扩展。

对我有用的代码是:

MAILTO="somebody@test.com"

curl -s -o /dev/null http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron.php /dev/null

我希望这对某人有所帮助,因为我失去了将近 2 天的时间来获得正确的设置。祝你好运!

【讨论】:

以上是关于Magento - cron 作业脚本正在运行,但 Magento 订单确认电子邮件未发送的主要内容,如果未能解决你的问题,请参考以下文章

从命令行运行但不能通过 cron 运行时脚本运行良好

在我在docker容器中重新保存cron文件之前,Cron作业不起作用

如何通过 cron 作业执行 Node.js 脚本?

用于 magmi 导入的 Cron 作业

基本 cron 作业设置为每天执行 php 文件

在 cpanel 中使用 cron 作业运行 php 脚本