我正在尝试使用 php 脚本通过 cronjob 发送电子邮件。脚本本身在 shell 中执行时运行良好。当由 cron 运行时,附件丢失。
操作系统是 RHEL 7
Cron条目:
30 4 1 * * user /usr/bin/php /path/sendmail.php >/dev/null 2>&1
crontab中的用户与shell用户相同
剧本 :
<?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('[email protected]', '');
$mail->addAddress('[email protected]', '');
$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 设置问题之一。
蒂娅·韦恩
答案1
尝试使用绝对路径而不是相对路径,因为 cron 从不同的上下文运行
$mail->addAttachment(dirname(__FILE__)."/domain2.csv", 'domain2.csv');