首页 文章

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

提问于
浏览
1

正如Magento documentation所述,您需要在Web服务器上设置一个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的工作正在运行......我无法弄明白这一点!

请帮忙!

ADDITIONAL DETAILS

以下是我知道cron作业的工作原理 - 我已经在我的服务器上测试了cron作业,创建了一个发送基本电子邮件的PHP脚本 mail() ,并运行了一个类似的cron作业到上面的每一分钟执行它 - cron作业函数一般 . 每次运行cron作业时,我也会从服务器收到 MAILTO 封电子邮件 . 没有我能看到的错误 .

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

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

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

这完全是奇怪的,我无法弄清楚......最终,如果客户无法退房并收到确认电子邮件,我在Magento商店所做的所有这些工作都没有实际意义 .

任何建议都将非常感激 .

UPDATE

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

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

虽然's technically working now, Magento'的文档特别建议运行 cron.sh ,而不是 cron.php . 仍然会喜欢具体的答案,为什么cron作业不会与 sh 一起运行 cron.sh .

2 回答

  • 1

    我将尝试的一些步骤:

    在终端:

    检查你的cron日志:

    tail -f /var/log/cron
    

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

    检查cronjobs是否存在:

    crontab -l
    

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

    chmod +x file.sh
    

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

    pgrep crond
    
  • 1

    如果出现错误,您将收到记录错误的电子邮件,但这需要先配置 . 你可以在这里看到解决方案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状态电子邮件,MAMP用于测试本地Magento和安装和配置的AOE Scheduler Magento扩展 .

    对我有用的代码是:

    MAILTO="somebody@test.com"
    
    curl -s -o /dev/null http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron.php /dev/null
    

    我希望这有助于某人,因为我失去了将近2天的正确设置 . 祝好运!

相关问题