it-swarm.com.ru

Не удалось найти транспортный сокет "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 &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= "[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's 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'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';    
?>
19
Jack

Проверьте файл php.ini, если он у вас есть:

;extension=php_openssl.dll

измените это на

extension=php_openssl.dll

После этого не забудьте перезапустить Apache, используя любую панель управления, которую предлагает Appserver, или используя окна служб на панели управления системы.

Также убедитесь, что php_openssl.dll находится в папке, доступной для системы, многие люди используют ее для решения проблемы местоположения DLL, копируя их в C:\windows или C:\windows\system32. Хотя это не должно быть необходимым.

После этого запустите файл с phpinfo и убедитесь, что он включен.

Я где-то читал, не могу точно сказать, что в некоторых установках такого типа вам нужно более одного php.ini, но только один действительно активен, возможно, вы отредактировали неправильный?

37
PatomaS

У меня была похожая ошибка с ssl в течение нескольких часов.

Для меня работало копирование php\libeay32.dll, php\ssleay32.dll и php\ext\php_openssl.dll из каталога php в каталог Apache2.2\bin. Затем перезапустите Apache.

1
emanresu

Правильный ответ - заменить строку

;extension=php_openssl.dll

в файле php.ini с

extension=php_openssl.dll

Если вы не можете найти extension=php_openssl.dll в файле php.ini, просто добавьте в файл следующую строку:

extension=php_openssl.dll

Это должно работать!

1
Dawson

Для некоторых людей эти решения не работают.

Для меня решение было следующее: скопируйте dll libeay32.dll и ssleay32.dll в каталог bin сервера - Apache.

Решение предлагается в комментарии в: http://php.net/manual/fa/openssl.installation.php

Когда я посмотрел в журнале ошибок, я понял, что проблема была в загрузке DLL и единственный способ - поместить их в каталог сервера.

0
Daniel