【发布时间】:2014-06-25 16:02:14
【问题描述】:
我遇到了一个用于发送垃圾邮件的未知 PHP 脚本的问题。该站点使用 PHPMailer,而 PHPMailer 又使用 sendmail。
如何使用 PHPMailer(及其内容)记录哪些 PHP 脚本正在发送电子邮件?
在 php.ini 中使用 mail.log = /var/log/phpmail.log 本来很容易,但如果站点使用 PHPMailer,它就不起作用了?
【问题讨论】:
我遇到了一个用于发送垃圾邮件的未知 PHP 脚本的问题。该站点使用 PHPMailer,而 PHPMailer 又使用 sendmail。
如何使用 PHPMailer(及其内容)记录哪些 PHP 脚本正在发送电子邮件?
在 php.ini 中使用 mail.log = /var/log/phpmail.log 本来很容易,但如果站点使用 PHPMailer,它就不起作用了?
【问题讨论】:
你可以在你的PHPMailer的send()方法中使用debug_backtrace()函数:
http://php.net/manual/de/function.debug-backtrace.php
在这里你可以做你想要的日志记录(我建议记录到文件)
注意:编辑库文件不是好习惯。也许您想从 PHPMailer 扩展一个类,在此处创建您的附加逻辑,然后使用它。
class MyPhpMailer extends PHPMailer {
public function send() {
$callinfo = print_r(debug_backtrace(), true);
//Logging $callinfo...
parent::send();
}
}
【讨论】:
error_log(print_r(debug_backtrace(),TRUE));