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.sh
和 sh
。
【问题讨论】:
将/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 订单确认电子邮件未发送的主要内容,如果未能解决你的问题,请参考以下文章