Я пытаюсь отправить электронное письмо с помощью задания cron, используя скрипт php. Сам сценарий отлично работает при выполнении в оболочке. Когда он запускается cron, вложение отсутствует.
ОС - RHEL 7
Запись в Cron:
30 4 1 * * user /usr/bin/php /path/sendmail.php >/dev/null 2>&1
Пользователь в crontab такой же, как пользователь оболочки
Сценарий:
<?php
require '/usr/share/php/PHPMailer/PHPMailerAutoload.php';
$msg = "";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = "mail.domain.com";
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->SMTPDebug = 0;
$mail->do_debug = SMTP::DEBUG_CONNECTION;
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Username = "SMTP-User";
$mail->Password = 'SMTP-pass';
$mail->setFrom('from@domain.com', '');
$mail->addAddress('receiver@domain.com', '');
$mail->Subject = 'Domains';
$mail->Body = 'Attachment : domain2.csv';
// Attach the uploaded file
$mail->addAttachment("domain2.csv", 'domain2.csv');
if (!$mail->send()) {
$msg .= "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg .= "Message sent!";
}
?>
Не слишком сложно .
Может кто подскажет, как это исправить? Я думаю, что это снова одна из проблем с настройками SELinux.
TIA Wayne
Попробуйте использовать абсолютный путь, а не относительный, так как cron запускается из другого контекста
$mail->addAttachment(dirname(__FILE__)."/domain2.csv", 'domain2.csv');