PHP mail: как переопределить или обходить настройку mail.log

phpinfo () возвращает этот конкретный параметр, который является проблематичным:

mail.log /var/log/phpmail.log 

Проблема в том, что я не могу получить доступ к файлу phpmail.log, чтобы установить для него права CHMOD, поэтому мой error_log заполняется следующей ошибкой каждый раз, когда срабатывает почта ():

 PHP Warning: mail(/var/log/phpmail.log): failed to open stream: Permission denied 

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

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

Сначала я попытаюсь связаться с тем, кто управляет вашим сервером, он или она должен исправить эту проблему.

Если это не работает, параметр mail.log является параметром PHP_INI_PERDIR , что означает:

Запись может быть установлена ​​в php.ini, .htaccess, httpd.conf или .user.ini (начиная с PHP 5.3)

Очевидно, что вы не можете получить доступ к php.ini и httpd.conf , но если .user.ini предоставляется .user.ini или вам разрешено изменять настройки в .htaccess , тогда это будет способ решить эту проблему ,

Видеть:
Файлы .user.ini
Установите значения php.ini с помощью .htaccess

Кроме того, вы можете рассмотреть возможность использования Swift Mailer или PHPMailer, которым не нужна функция mail() . В общем, использование mail() не рекомендуется, оно очень простое и довольно сложно использовать правильно и надежно.

Вы можете изменить mail.log файлу mail.log в настройках php.ini в доступное для записи место для Apache или любого используемого вами сервера.

Я новичок в PHP, поэтому не знаю, действительно ли мое решение – это способ решить эту проблему или если она работает из-за совпадения!

У меня та же проблема, что и здесь: вызов функции PHP mail () вызывает предупреждение PHP. Все объяснено в первом сообщении. У меня также нет разрешения на редактирование mail.log или каталога, в котором его можно сохранить.

Googling, я нашел код, который вызывает mail (), которому предшествует @ . Я попытался использовать код @mail (), и он сработал!

Итак, это рабочий код, который я использую:

 $mail_to = "MyAddress@email.com"; $mail_from = $email; // This e-mail address is taken by an HTML form $mail_subject = "Test PHP function"; $mail_body = "<p>This is the body message for the test of a PHP function!</p>"; // HTML headers $mail_in_html = "MIME-Version: 1.0 "; $mail_in_html .= "Content-type: text/html; charset=iso-8859-1 "; $mail_in_html .= "From: <$mail_from>"; // Submission process if(@mail($mail_to, $mail_subject, $mail_body, $mail_in_html)) { print "E-mail sent!"; } else { print "Error: e-mail not sent."; } 

Я нашел этот код, и он достаточно хорош:

 error_reporting(0); 

Вставляется прямо перед вызовом функции mail (). Error_log больше не заполняется.