我是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
中使用的路径可能需要更改为绝对路径。