задание cron не открывается file_get_contents - PullRequest
5 голосов
/ 11 февраля 2012

Я запускаю скрипт php, который использует file_get_contents для отправки по почте списка с тем, что находится внутри этого удаленного файла. Если я запускаю скрипт вручную, все работает нормально, но когда я оставляю его и жду запуска cron, он не получает этот удаленный контент ..... Возможно ли это? я копирую здесь немного кода, где я думаю, что проблема:

$flyer = file_get_contents('flyer.html');

$desti = $firstname." ".$lastname;

$mail = new phpmailer();

$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "orion.xxxx.com"; // line to be changed
$mail->Port = 465; // line to be changed
$mail->Username = 'bob@xxxx.com'; // line to be changed
$mail->Password = 'xxxx90'; // line to be changed
$mail->FromName = 'Bob'; // line to be changed
$mail->From = 'bob@xxxx.com';// line to be changed

$mail->AddAddress($email, $desti);

$mail->Subject = 'The Gift Store';    // to be changed



if ($cover_form == '1'){ $mail->MsgHTML($long10);} else
if ($cover_form == '2'){ $mail->MsgHTML($customer);} else
if ($cover_form == '3'){ $mail->MsgHTML($freedoers);} else
if ($cover_form == '4'){ $mail->MsgHTML($freelongform);}  else
if ($cover_form == '5'){ $mail->MsgHTML($freestoreshort);}  else
if ($cover_form == '6'){ $mail->MsgHTML($getasiteshort);}  else
if ($cover_form == '7'){ $mail->MsgHTML($flyer);}  
else {}

Ответы [ 4 ]

8 голосов
/ 11 февраля 2012

Cron не загружает код из «папки», в которой вы находитесь, поэтому вам нужно будет указать полный путь

$flyer = file_get_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . "flyer.html");

4 голосов
/ 11 февраля 2012

Путь к файлу отличается, когда cron выполняет

Попробуйте

$flyer = file_get_contents(__DIR__ . '/flyer.html');

Или укажите путь самостоятельно

1 голос
/ 11 февраля 2012

попробуй так:

file_get_contents('flyer.html', true);
0 голосов
/ 11 февраля 2012

Вы должны убедиться, что вывод и ошибки перенаправляются в файл, чтобы вы могли получить представление о том, что происходит с вашим скриптом при запуске cron.

Команда в crontab будет выглядеть такэто:

php /path/to/your/script.php >/tmp/log.txt 2>&1

Однако, взглянув на ваш код, я бы предложил вам использовать абсолютный путь для открытия файла flyer.html, чтобы ваш скрипт работал, даже если он запущен из другого каталога, в котором находится этот файл.

...