wake-up-neo.net

Den Socket-Transport "ssl" konnte nicht gefunden werden. Haben Sie vergessen, ihn bei der Konfiguration von PHP zu aktivieren?

Ich werde googeln, wie man diesen Fehler viele Stunden macht. Ich habe alle Lösungen aus diesem Thema ohne Glück ausprobiert. <? phpinfo(); ?> (der einzige Unterschied, den ich Appserver anstelle von IIS verwende) zeigt nichts an, was in SSL umgesetzt wurde. Was soll ich noch probieren?

Die vollständige Fehlermeldung:

<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)

und code:

<?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

Überprüfen Sie Ihre php.ini-Datei darauf, wenn Sie Folgendes haben:

;extension=php_openssl.dll

Ändern Sie es in

extension=php_openssl.dll

Denken Sie anschließend daran, Apache neu zu starten, entweder über ein von Appserver angebotenes Kontrollfeld oder über die Dienstfenster des Kontrollfelds des Systems.

Stellen Sie außerdem sicher, dass sich die Datei php_openssl.dll in einem Ordner befindet, den das System erreichen kann. Viele Leute verwenden das Problem, um Probleme mit der DLL-Position zu lösen, indem Sie sie nach C:\windows oder C:\windows\system32 kopieren. Obwohl das nicht nötig sein sollte.

Führen Sie danach eine Datei mit phpinfo aus und prüfen Sie, ob sie aktiviert ist.

Ich habe irgendwo gelesen, kann es nicht genau feststellen, dass eine Installation dieser Art von Wamps mehr als eine php.ini hat, aber nur eine wirklich aktiv ist. Könnte es sein, dass Sie die falsche bearbeitet haben?

37
PatomaS

Ich hatte stundenlang einen ähnlichen Fehler mit ssl.

Was für mich funktionierte, war das Kopieren von php\libeay32.dll, php\ssleay32.dll und php\ext\php_openssl.dll aus dem Verzeichnis php in das Verzeichnis Apache2.2\bin. Starten Sie dann Apache neu.

1
emanresu

Die richtige Antwort ist, die Zeile zu ersetzen

;extension=php_openssl.dll

in der php.ini-Datei mit

extension=php_openssl.dll

Wenn Sie extension=php_openssl.dll nicht in der php.ini-Datei finden können, hängen Sie einfach die folgende Zeile an die Datei an:

extension=php_openssl.dll

Das sollte funktionieren!

1
Dawson

Für manche Leute funktionieren diese Lösungen nicht.

Für mich war das die Lösung: kopiere dll libeay32.dll und ssleay32.dll in das bin-Verzeichnis des Servers - Apache.

Die Lösung schlägt in einem Kommentar vor in: http://php.net/manual/fa/openssl.installation.php

Wenn ich im Fehlerprotokoll nachschaue, habe ich verstanden, dass das Problem darin bestand, die DLLs zu laden und sie in das Serververzeichnis zu stellen, war der einzige Weg.

0
Daniel