Cronjob 和 PHPmailer 没有按预期工作

Cronjob and PHPmailer not working as expected

我有两个 cron 作业

0 8 * * *   /usr/bin/php /var/www/Apps/Appsname/Extract.php
*/2 * * * * /usr/bin/php /var/www/Apps/Appsname/weeklybusinessemail.php

提取的 cronjob 工作得很好。

weeklybusinessemail.php没有。

它有一个带有附件的 phpmailer 脚本。

当我 运行 weeklybusinessemail.php 通过 url 它工作并发送电子邮件时,但通过 crontab 它没有! 所有名称都匹配。

任何帮助将不胜感激

> /dev/null 重定向标准输出。
2>&1 将标准错误 (2) 重定向到标准输出 (1)

尝试:

*/2 * * * * php /var/www/Apps/Appsname/weeklybusinessemail.php > /dev/null 2>&1

如果应用程序是 mvc:

*/2 * * * * php /var/www/Apps/Appsname/index.php controller_folder/controller_class_name > /dev/null 2>&1

如果没有更多调试信息很难说,但是当 运行ning cron 任务是工作目录位置时的一个常见问题。如果您希望附件与脚本位于文件夹中并使用 filename.txt 等相对路径引用它们,则该路径不是相对于脚本的,而是 cron 进程的工作目录,它可以在任何地方.当您从 Web 运行 它时它会起作用,因为您的 Web 服务器在 运行 脚本之前将目录更改为虚拟主机的根目录,因此相对路径将起作用。

尝试为您的文件附件使用绝对路径(例如使用 __DIR__.'/filename.txt'),或者在 运行 执行您的 cron 任务之前更改目录:

*/2 * * * * cd /var/www/Apps/Appsname && /usr/bin/php /var/www/Apps/Appsname/weeklybusinessemail.php