Не удалось найти перенос сокетов "ssl" - вы забыли включить его при настройке PHP?
Я искал для этой ошибки много часов. Я пробовал все решения из этой темы без везения. <? 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 "ssl" - 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= "[email protected]";
$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 SMTP server
$mail->SMTPDebug = 2;
$mail->SMTPSecure = 'ssl';
$mail->Username = "[email protected]"; // GMAIL username
$mail->Password = "*********"; // GMAIL password
$mail->AddReplyTo("[email protected]","AAAA"); // Reply email address
$mail->From = "[email protected]";
$mail->FromName = "...."; // Name to appear once the email is sent
$mail->Subject = "...."; // Email 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';
?>
Ответы
Ответ 1
Проверьте файл php.ini на нем, если у вас есть это:
;extension=php_openssl.dll
измените его на
extension=php_openssl.dll
После этого не забудьте перезапустить Apache, используя любую панель управления, предлагаемую Appserver, или используя окна служб на панели управления системы.
Также убедитесь, что php_openssl.dll находится в папке, доступной системе, и многие люди используют ее для решения проблемы с локализацией dll, скопировав их в C:\windows или C:\windows\system32. Хотя это не обязательно.
После этого выполните файл с phpinfo и убедитесь, что он включен.
Я где-то читал, не могу точно определить, что какая-то установка таких типов имеет больше одного php.ini, но только один действительно активен, может быть, вы отредактировали неправильный?
Ответ 2
У меня была схожая ошибка с ssl в течение нескольких часов.
Для меня работала копирование php\libeay32.dll
, php\ssleay32.dll
и php\ext\php_openssl.dll
из каталога php в каталог Apache2.2\bin
. Затем перезапустите apache.
Ответ 3
Правильный ответ - заменить строку
;extension=php_openssl.dll
в файле php.ini
с
extension=php_openssl.dll
Если вы не можете найти extension=php_openssl.dll
в файле php.ini
, просто добавьте следующую строку в файл:
extension=php_openssl.dll
Это должно сработать!
Ответ 4
Для некоторых людей эти решения не работают.
Для меня решением было следующее: скопировать dll libeay32.dll и ssleay32.dll в каталог bin на сервере - apache.
Решение предлагает в комментарии в:
http://php.net/manual/fa/openssl.installation.php
Когда я смотрю в журнал ошибок, я понял, что проблема заключается в загрузке DLL, и размещение их в каталоге сервера было единственным способом.