Magento - cron 作业脚本是 运行,但 Magento 订单确认电子邮件未发送
Magento - cron job script is running, but Magento order confirmation emails are not sending
如 Magento documentation 所述,您需要在您的网络服务器上设置一个 cron 作业,以便发送订单确认电子邮件等内容,如下所示:
* * * * * /bin/sh /absolute/path/to/magento/cron.sh
这是一个非常简单的 cron 作业。问题是,自动化任务在 Magento 中没有完成。就好像 cron 作业没有 运行 脚本一样。结果,订单确认电子邮件没有发送(在所有其他 Magento 自动化任务中)。
我已经安装了 AOE Scheduler 扩展来仔细检查 Magento 中的每个自动化任务并查看任务何时完成(或者,在这种情况下,何时没有完成)。 None 的任务(包括 core_email_queue_send_all
)每 1 分钟完成一次。
现在是奇怪的部分。如果我只是 运行 cron.php
脚本(cron.sh
触发 cron.php
)通过在我的网络浏览器 mydomain.com/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
.
我将尝试的一些步骤:
在终端中:
检查您的 cron 日志:
tail -f /var/log/cron
你能看到命令是 运行 吗?
检查是否存在 cronjobs:
crontab -l
检查cron用户是否有文件的可执行权限,如果没有:
chmod +x file.sh
cron 运行是宁吗?检查进程是否 运行ning:
pgrep crond
如果出现错误,您将收到一封包含错误记录的电子邮件,
但这需要先配置。你可以在这里看到解决方案
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 天的时间来获得正确设置的人有所帮助。祝你好运!
如 Magento documentation 所述,您需要在您的网络服务器上设置一个 cron 作业,以便发送订单确认电子邮件等内容,如下所示:
* * * * * /bin/sh /absolute/path/to/magento/cron.sh
这是一个非常简单的 cron 作业。问题是,自动化任务在 Magento 中没有完成。就好像 cron 作业没有 运行 脚本一样。结果,订单确认电子邮件没有发送(在所有其他 Magento 自动化任务中)。
我已经安装了 AOE Scheduler 扩展来仔细检查 Magento 中的每个自动化任务并查看任务何时完成(或者,在这种情况下,何时没有完成)。 None 的任务(包括 core_email_queue_send_all
)每 1 分钟完成一次。
现在是奇怪的部分。如果我只是 运行 cron.php
脚本(cron.sh
触发 cron.php
)通过在我的网络浏览器 mydomain.com/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
.
我将尝试的一些步骤:
在终端中:
检查您的 cron 日志:
tail -f /var/log/cron
你能看到命令是 运行 吗?
检查是否存在 cronjobs:
crontab -l
检查cron用户是否有文件的可执行权限,如果没有:
chmod +x file.sh
cron 运行是宁吗?检查进程是否 运行ning:
pgrep crond
如果出现错误,您将收到一封包含错误记录的电子邮件, 但这需要先配置。你可以在这里看到解决方案 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 天的时间来获得正确设置的人有所帮助。祝你好运!