Impossible de trouver le transport de socket " https"

Je l'utilise pour vérifier la disponibilité d'une URL:

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

et je récupère cette erreur...

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

j'utilise un serveur IIS btw,( pas de son pas de mon fait! ) donc je pense que c'est quelque chose à voir avec ne pas avoir ouvert le ssl, mais je ne suis pas sûr. Est-ce que quelqu'un peut aider s'il vous plaît?

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

des idées?

32
demandé sur Benjamin 2008-12-18 20:30:35

6 réponses

même pour ssl vous devez préfixer l'hôte avec ssl: / /

12
répondu Martijn Laarman 2008-12-18 17:41:27

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

45
répondu Sérgio 2011-01-31 00:16:45

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

la page de Manuel de pour fsockopen. Regardez L'exemple n ° 1.

27
répondu tvanfosson 2008-12-18 18:22:07

disons que vous vouliez saisir NY Times, qui fait respecter HTTPS:

Incorrect:

$client = stream_socket_client('https://www.nytimes.com', $errno, $errstr, 30);

Correct:

$client = stream_socket_client('tcp://www.nytimes.com:443', $errno, $errstr, 30);

Note j'ai remplacé https:// par tcp:// et ai ajouté le port 443 au nom d'hôte.

je suppose que nous pouvons dire que stream_socket_client() ne parle pas URLs.

2
répondu Nino Škopac 2017-02-19 12:49:17

vérifier curl installé ou non pour php. si elle n'est pas installée, installez la boucle. pour windows Uncomment la ligne: extension=php_openssl.dll en php.ini, pour ubuntu sudo apt-get install php-curl

0
répondu S.Abbu 2017-01-11 11:22:42

passer à ssl:// a fonctionné pour moi mais j'ai continué à recevoir une mauvaise réponse à la demande. J'ai trouvé que j'avais besoin d'ajouter une ligne de plus pour déclarer explicitement mon en-tête D'hôte comme décrit ici et m'assurer que J'ai 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";
0
répondu Tony Schmidt 2017-05-23 12:03:07