我使用新版本的PHPMailer。在服务器上,我收到一个错误:
警告:出于安全原因,在第1442行的/public_html/library/email/class.phpmailer.php中已禁用了escapeshellcmd()
是否有可以取代escapeshellcmd()
的功能?
答案 0 :(得分:3)
不,escapeshellcmd()
has some inherent problems使许多人无法禁用,但您可以采用不同的方式解决这个问题:使用SMTP转换为localhost 。
默认情况下,PHPMailer使用PHP mail()
函数进行发送,该函数通过shell调用本地sendmail二进制文件(需要使用escapeshellcmd()
),从而打开与邮件的同步SMTP连接localhost上的服务器。您可以通过直接向localhost发送,绕过shell开销来跳过大部分内容。这样做:
$mail->isSMTP();
$mail->Host = 'localhost';
其他设置应与默认设置一起使用。将SMTP用于localhost的两个优点是,您可以在提交过程中获得更好的反馈(使用$mail->SMTPDebug = 2;
),并且比使用mail()
更快。
答案 1 :(得分:1)
您可以使用旧版本。我使用版本:5.2.6并且它可以工作。