나는 시스템이 예약이 만료되기 전에 어느 날 전자 메일을 사용자에게 보낼 수있는 새로운 기능을 개발하려고합니다. 저는 PHP 스크립트를 작성하고 crontab을 사용하여 매일 아침 PHP 파일 실행을 시작했습니다. 이제 문제는 PHP 파일을 컴파일하면 모든 것이 잘 작동하고 전자 메일이 사용자에게 전송된다는 것입니다. 내가 쓴대로 나는 maillog를 확인하면Crontab이 올바른 사람에게 PHP 알림 전자 메일을 보내지 않음
to=<[email protected]>, ctladdr=<blablala> (0/0), delay=00:04:12, xdelay=00:04:12, mailer=esmtp, pri=120371, relay=XXXXXXX., stat=Sent (r3HMoisd031604 Message accepted for delivery)
을 이야기하지만이 같은 PHP 파일을 실행하기 위해 crontab을 사용하는 경우, 메일이 서버의 루트로 전송됩니다,하지만 "[email protected]" PHP 파일.
to=<[email protected]>, ctladdr=<blablabla> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30958, dsn=2.0.0, stat=Sent
무엇이 문제 일 수 있습니까? PHP 파일이 crontab에서 예상대로 작동하지 않는 이유는 무엇입니까? 누구든지 도울 수 있니?
내 PHP 파일 - "demo.php"
require_once "defaultincludes.inc";
global $tbl_entry, $tbl_users;
$current = mktime(date("H"),date("i"),0,date("m"),date("d"),date("Y"));
$start = $current + 12*3600;
$end = $current + 40*3600;
$query="SELECT U.email, U.fullname, E.name FROM $tbl_entry E, $tbl_users U "
." WHERE U.name = E.create_by "
." AND E.end_time >= $start "
." AND E.end_time <= $end ";
$result= sql_query($query);
$mail_list=array();
for ($i=0; ($row=sql_row_keyed($result,$i));$i++)
{
$temp=array();
$temp[]=$row['fullname'];
$temp[]=$row['email'];
$temp[]=$row['name'];
$mail_list[]=$temp;
}
for ($i=0; $i<count($mail_list); $i++) {
$to = $mail_list[$i][1];
$subject= "Reminder of ".$mail_list[$i][2];
$body = "Hi ".$mail_list[$i][0].",\n"
." Your reservation ".$mail_list[$i][2]." will expire in one day";
mail($to,$subject,$body);
}
crontab 파일 - "reminder.txt"
30 7 * * * /var/www/html/qars-vm90/demo.php
당신은 2 개의 루프와 표준이 필요하지 않지만()은 훨씬 쉬울 것입니다. –