发送带附件的数据不起作用 Cronjob

sending data with attachment doesn't work Cronjob

我不太了解 cron 作业,但我有一个 php 文件,当我 运行 使用浏览器发送数据时它工作正常并发送了附件,但如果我使用cron 作业到 运行 它,它永远不会与附件一起使用。 这是 cron 作业命令行:

/opt/php54/bin/php /home/username/public_html/path/to/myscript.php

这里是 php 文件中的错误位置,因为 cron 作业向我发送了带有 "Some how file :hhshd.jpg is not exist!" 的电子邮件,但是当我使用浏览器时,带有附件的数据已成功发送。

 if (!file_exists("uploads/" .  $fileName))
            {
                die("Some how file :$fileName is not exist!");
            } 

注意:我正在使用 Hostgator 的 cronjob。

一个可能的原因是当您通过浏览器 运行 脚本时,Apache 用户能够创建附件文件并发送它。

但是当 cronjob 由于权限问题无法创建附件时。

您可以尝试在您的 cronjob 中使用 'sudo' 或尝试更改您正在创建附件的目录的权限。

这很可能是所有权和权限问题。你必须在你的 cron 配置中放入什么取决于你把它放在哪里以及你的网络服务器 运行s 作为什么用户。如果您希望它在每天凌晨 5 点 运行,它位于 /etc/crontab 并且 www-data 是您的网络服务器用户,您需要这样的条目:

0 5    * * *   www-data    /opt/php54/bin/php /home/username/public_html/path/to/myscript.php

如果它在网络服务器用户自己的 crontab 文件中,它将跳过用户名字段。您可以使用 crontab -u www-data -e 对其进行编辑,并添加如下一行:

0 5 * * * /opt/php54/bin/php /home/username/public_html/path/to/myscript.php

另一个问题可能是当前工作目录可能不同,因此您可能需要设置命令以将 cd 包含到脚本所在的目录中,如下所示:

cd /home/username/public_html/path/to && /opt/php54/bin/php myscript.php

如果您想从 cron 作业接收任何错误输出,请在 运行 命令之前向 cron 文件添加这样的一行来设置 MAILTO 环境变量:

MAILTO=user@example.com

问题已解决我使用了这个 cron 作业命令:

curl http://yoursite/path/to/publish.php

示例:

* * * * * 卷曲 http://localhost/Android/SMS/p1.php

在上面的行中键入以每秒执行一次 p1.php 电子邮件发送带有附件的文件。 p1.php 文件在我的 htdocs/Android/SMS 文件夹中。