web-dev-qa-db-fra.com

Impossible de trouver le transport de socket "https"

J'utilise ceci pour vérifier la disponibilité d'une URL:

$fp = fsockopen($url, 443, $errno, $errstr);

et j'obtiens cette erreur en retour ...

Attention: fsockopen () [function.fsockopen]: impossible de se connecter à https://example.com/soapserver.php:443 (impossible de trouver le transport de socket "https" - avez-vous oublié d'activer quand vous avez configuré PHP?) dans C:\Home etc etc ....

J'utilise un IIS serveur btw, (non ce n'est pas ce que je fais!), Donc je pense que cela a quelque chose à voir avec le fait de ne pas avoir open-ssl, mais je ne suis pas sûr. Quelqu'un peut-il aider s'il vous plaît? 

J'ai fait un phpinfo () et j'ai ssl, mais sur IMAP et cURL, c'est tout.

Des idées?

33
Chris J Allen

aussi pour ssl vous devez préfixer l'hôte avec ssl: //

13
Martijn Laarman

Décommentez la ligne: extension=php_openssl.dll dans php.ini

46
Sérgio

Vous devriez utiliser uniquement le nom d'hôte, pas l'URL de l'appel fsockopen. Vous devrez fournir l'URI, moins l'hôte/le port, dans les en-têtes HTTP réels. Comme @Martijin l'a noté, et comme indiqué dans la page de manuel, vous devez préfacer votre nom d'hôte avec ssl: // pour SSL ou tls: // si vous utilisez la sécurité de la couche de transport.

Page de manuel pour fsockopen. Regardez l'exemple n ° 1.

28
tvanfosson

Passer à ssl:// a fonctionné pour moi, mais j'ai continué à recevoir une réponse BAD REQUEST. J'ai constaté que je devais ajouter une ligne supplémentaire pour déclarer explicitement mon en-tête d'hôte comme décrit ici et m'assurer d'avoir mis à jour mon HTTP de HTTP/1.0 à HTTP/1.1:

$header .= "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.Paypal.com\r\n";
1
Tony Schmidt

Vérifiez curl installé ou non pour php . S'il n'est pas installé, installez curl . Pour Windows Décommentez la ligne: extension = php_openssl.dll dans php.ini, Pour Ubuntu Sudo apt-get install php -boucle

0
S.Abbu