php - 无法找到套接字传输 "ssl"- 您是否在配置 PHP 时忘记启用它?

标签 php windows apache sockets ssl

我在谷歌上搜索了很多小时如何解决这个错误。我已经尝试了 this 中的所有解决方案没有运气的话题。 <? phpinfo(); ?> (我使用 Appserver 而不是 IIS 的唯一区别)它没有显示与 SSL 相关的任何内容。我还应该尝试什么?

完整的错误信息:

<b>Warning</b>:  fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport &quot;ssl&quot; - did you forget to enable it when you configured PHP?) in <b>C:\AppServ\www\webgitz\test\class.smtp.php</b> on line <b>122</b><br />
SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (27010016)

和代码:

<?php 

require_once "validation.php";

require_once "PHPMailer.php";


require_once "class.smtp.php";

$email= "foo@gmamcil.com";

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth   = true; // enable SMTP authentication
$mail->Port       =465;                    // set the SMTP server port
$mail->Host = "smtp.gmail.com"; // GMAIL's SMTP server
$mail->SMTPDebug = 2;
$mail->SMTPSecure = 'ssl';
$mail->Username   = "xxxxxx@gmail.com"; // GMAIL username
$mail->Password   = "*********"; // GMAIL password
$mail->AddReplyTo("XXXXX@gmail.com","AAAA"); // Reply email address
$mail->From = "XXXX@gmail.com";
$mail->FromName = "...."; // Name to appear once the email is sent
$mail->Subject = "...."; // Email's subject
$mail->Body = "Hello World,<br />This is the HTML BODY<br />"; //HTML Body
$mail->AltBody = "..."; // optional, commentA out and test
$mail->WordWrap = 50; // set word wrap
$mail->MsgHTML($msg); // [optional] Send body email as HTML
$mail->AddAddress("$email", "fooo");  // email address of recipient
$mail->IsHTML(true); // [optional] send as HTML

if(!$mail->Send()) echo 'ok'; else echo 'error';    
?>

最佳答案

检查你的 php.ini 文件,如果你有这个:

;extension=php_openssl.dll

改成

extension=php_openssl.dll

之后,记得重启 Apache,可以使用 Appserver 提供的任何控制面板,也可以使用系统控制面板上的服务窗口。

还要确保php_openssl.dll在系统可以到达的文件夹下,很多人解决dll位置问题的方法是将它们复制到C:\windows或C:\windows\system32。尽管这不是必需的。

之后,使用 phpinfo 执行一个文件并检查它是否已启用。

我在某处读到,无法确定,有些安装的那种 wamps 有多个 php.ini,但只有一个是真正活跃的,会不会是你编辑错了?

关于php - 无法找到套接字传输 "ssl"- 您是否在配置 PHP 时忘记启用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21962849/

相关文章:

php - 如何有效地将字符串与大量正则表达式匹配

Java - 带有 System.out.println() 的 Mac/Windows

windows - Windows 上的德尔福

apache - 尝试在 apache2 中将 http 重定向到 https

Apache + WSGI 运行 Flask,得到 Python ImportError : "cannot import name ..." or "No module named ..."

java - 如何解决 : javax. servlet.ServletException : java. lang.NoClassDefFoundError: javax/xml/ws/soap/SOAPFaultException

php - echo 功能和永久链接的编辑

php - 删除多个文件

javascript - 如何通过下拉列表更新数据库而不重新加载页面

mysql - 适用于 Node.js 的 MySQL 驱动程序适用于 Windows?