【问题标题】:PHPMailer Extension missing: openssl缺少 PHPMailer 扩展:openssl
【发布时间】:2017-10-06 20:38:10
【问题描述】:

根据 PHPMailer 提供的示例,我有这个脚本:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
if($_POST){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $patrimonio = $_POST['patrimonio'];
    $serial = $_POST['serial'];
    $unidade=$_POST['unidade'];
    $endereco=$_POST['endereco'];
    $setor=$_POST['setor'];
    $telefone=$_POST['telefone'];
    $procedencia=$_POST['procedencia'];
    $equipamento=$_POST['equipamento'];    
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = gethostbyname("smtp.gmail.com");
$mail->Port = 587;
$mail->SMTPSecure = "tls";
$mail->SMTPAuth = true;
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "myemail@gmail.com";
$mail->Password = "mypass";
$mail->setFrom("myemail@gmail.com", 'Gerador de OS');
$mail->addAddress($email, $name);
$mail->AddBCC('HelpDesk@gmail.com', $name);
$mail->Subject = "Abertura de OS";
$mail->Body=$message;
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "true";
}
}

即使这与原始示例完全相同,我也无法使其正常工作。

我得到的错误是:

Extension missing: openssl
Mailer Error: Extension missing: openssl

但是服务器说下面的命令一切正常:

php -i | grep -i openssl

结果是:

openssl

OpenSSL support => enabled

OpenSSL Library Version => OpenSSL 1.0.1 14 Mar 2012 

OpenSSL Header Version => OpenSSL 1.0.1 14 Mar 2012 Native 

OpenSSL support => enabled

此服务器中有 joomla,我可以确认 OpenSSL 正在运行。

Joomla informations

More joom informations

【问题讨论】:

  • php -i 仅向您显示 PHP CLI SAPI。您需要通过您的 Web 服务器运行 phpinfo() 以查看它是否有不同的选项。
  • 同步,phpinfo() 显示有关 openssl 的相同信息...
  • IIRC,PHPMailer 通过检查常量而不是 ext 本身来检查 openssl 的存在(对于安全模式问题) - 看起来您使用的是一个非常旧的 openssl 版本,它可能不包括必要的常数。
  • 同步,你会推荐一些Openssl版本吗?

标签: php ubuntu openssl phpmailer


【解决方案1】:

在 PHP 7 中,在 php.ini 文件的第 921 行附近取消注释 extension=php_openssl.dll。还要检查 extension=php_openssl.dll 在第 1945 行附近是否未注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2014-09-08
    • 2017-05-09
    • 2016-02-14
    • 2011-10-07
    • 2017-01-05
    • 2010-11-13
    相关资源
    最近更新 更多