PHP 错误与 cron 作业每天发送电子邮件两次



我是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.0rn";
$headers .= "Content-type: text/html; charset=ISO-8859-1rn";
$headers .= "Bcc: ".strip_tags($sender)."rn";
$headers .= "From: Domain.com <".strip_tags($sender).">rn";
$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)."rn";'

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

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

所以在你的 crontab 中,替换

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

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

将 cron 选项卡内容替换为:

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

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

最新更新