web-dev-qa-db-fra.com

Impossible de trouver le transport de socket "ssl" - avez-vous oublié de l'activer lorsque vous avez configuré PHP?

Je suis sur Google pour savoir comment commettre cette erreur plusieurs heures. J'ai essayé toutes les solutions de ce sujet sans succès. <? phpinfo(); ?> (la seule différence que j'utilise avec Appserver au lieu de IIS), cela ne montre rien de réel pour SSL Quoi d'autre devrais-je essayer?

Le message d'erreur complet:

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

et 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

Vérifiez votre fichier php.ini, dessus, si vous avez ceci:

;extension=php_openssl.dll

changez le en

extension=php_openssl.dll

Pensez ensuite à redémarrer Apache, à l’aide du panneau de commande proposé par Appserver ou des fenêtres de services du panneau de configuration du système.

Assurez-vous également que php_openssl.dll se trouve sur un dossier accessible par le système. De nombreuses personnes l’utilisent pour résoudre le problème des problèmes d’emplacement dll en les copiant dans C:\Windows ou C:\Windows\System32. Bien que cela ne devrait pas être nécessaire.

Après cela, exécutez un fichier avec phpinfo et vérifiez qu’il est activé.

J'ai lu quelque part, je ne peux pas le préciser, que certaines installations de ce type de wamps ont plus d'un php.ini, mais qu'un seul est vraiment actif, se pourrait-il que vous ayez modifié le mauvais?

37
PatomaS

J'ai eu une erreur similaire avec SSL pendant des heures.

Ce qui a fonctionné pour moi a été de copier php\libeay32.dll, php\ssleay32.dll et php\ext\php_openssl.dll du répertoire php vers le répertoire Apache2.2\bin. Puis redémarrez Apache.

1
emanresu

La bonne réponse est de remplacer la ligne

;extension=php_openssl.dll

dans le fichier php.ini avec

extension=php_openssl.dll

Si vous ne trouvez pas extension=php_openssl.dll dans le fichier php.ini, ajoutez simplement la ligne suivante au fichier:

extension=php_openssl.dll

Cela devrait marcher!

1
Dawson

Pour certaines personnes, ces solutions ne fonctionnent pas.

Pour moi, la solution était la suivante: copiez dll libeay32.dll et ssleay32.dll dans le répertoire bin du serveur - Apache.

La solution suggère dans un commentaire dans: http://php.net/manual/fa/openssl.installation.php

Quand j'ai regardé dans le journal des erreurs, j'ai compris que le problème était de charger les dll et de les mettre dans le répertoire du serveur était le seul moyen.

0
Daniel