2017-01-12 2 views
1

Я новичок в PHP, я создал хрон, чтобы отправить почту дважды perday в Cpanel:PHP ошибка с хрон отправки электронной почты дважды perday

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

посыла mail.php

<?php 
$to  = "[email protected]"; 
$sender = "[email protected]"; 
$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";' 

Я могу посылать электронную почту, просто запустив скрипт, но не может в хрон.

+0

Ошибка не из вашего сценария. например, в вашем скрипте нет 'strip_tags()'. Кроме того, лучше использовать почтовые библиотеки для отправки электронных писем, таких как PHPMailer или SwiftMailer – Raptor

+0

@Raptor hmm..What является точной ошибкой? –

+0

Я вижу, что вы изменили коды. Задача cron должна использовать PHP для запуска php-файла, а не для запуска самого файла PHP. например '/ usr/bin/php/path/to/your/script.php' – Raptor

ответ

0

Замените хрон вкладку содержимое с:

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

Обратите внимание, что путь, используемый в вашем send-mail.php, возможно, потребуется изменить, чтобы абсолютный путь.

0

Когда вы запускали из оболочки, она работала нормально, потому что система знала, что вы выполняете (через ./), но cron этого не знает; поэтому явным образом скажу ему, чтобы выполнить этот файл с помощью php.

Так что в вашем кронтаб, замените

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

с

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