【问题标题】:php error with cron job sending email twice perdaycron作业每天发送两次电子邮件的php错误
【发布时间】:2017-01-12 10:22:23
【问题描述】:

我是 PHP 新手,我确实创建了一个 cron 作业,每天在 cPanel 中发送两次邮件:

Minute  Hour    Day     Month   Weekday     Command
  0     0,12    *       *       *           /home/user/public_html/cronjob/send-mail.php

发送邮件.php

<?php
$to       = "john@domain.com";
$sender   = "sender@domain.com";
$subject  = "TEST CRONJOB";
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Bcc: ".strip_tags($sender)."\r\n";
$headers .= "From: Domain.com <".strip_tags($sender).">\r\n";
$html     = "<html>
                <body style='font-family:arial;'>
                    <p>Have a good day!<br>Test email sent twice per day.</p>
                </body>
            </html>";

mail($to, $subject, $html, $headers);
?>

经过几次测试,我收到以下错误:

/home/user/public_html/cronjob/send-mail.php: line 1: ?php: No such file or directory
/home/user/public_html/cronjob/send-mail.php: line 3: =: command not found
/home/user/public_html/cronjob/send-mail.php: line 4: =: command not found
/home/user/public_html/cronjob/send-mail.php: line 5: =: command not found
/home/user/public_html/cronjob/send-mail.php: line 6: =: command not found
/home/user/public_html/cronjob/send-mail.php: line 7: .=: command not found
/home/user/public_html/cronjob/send-mail.php: line 8: syntax error near unexpected token `('
/home/user/public_html/cronjob/send-mail.php: line 8: `$headers .= "Bcc: ".strip_tags($sender)."\r\n";'

我可以通过简单地运行脚本来发送电子邮件,但不能在 cron 中。

【问题讨论】:

  • 错误不是来自您的脚本。例如,您的脚本中没有 strip_tags()。此外,最好使用邮件库来发送邮件,例如 PHPMailer 或 SwiftMailer
  • @Raptor 嗯..什么是确切的错误?
  • 我看到你修改了代码。 cron 作业应该使用 PHP 来运行 php 文件,而不是运行 PHP 文件本身。例如/usr/bin/php /path/to/your/script.php
  • 使用PHP运行php文件?你能详细说明一下吗?

标签: php cron


【解决方案1】:

当您从 shell 执行时,它运行良好,因为系统知道您正在执行(通过 ./)但 cron 不知道;所以明确告诉它使用 php 执行该文件。

所以在你的 crontab 中,替换

/home/user/public_html/cronjob/send-mail.php

php -f /home/user/public_html/cronjob/send-mail.php

【讨论】:

    【解决方案2】:

    将您的 cron 选项卡内容替换为:

    #Minute  Hour    Day     Month   Weekday     Command
      0     0,12    *       *       *           /usr/bin/php /home/user/public_html/cronjob/send-mail.php
    

    请注意,send-mail.php 中使用的路径可能需要更改为绝对路径。

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2015-11-19
      • 2012-11-15
      • 1970-01-01
      相关资源
      最近更新 更多