[Php] Impossible de trouver le transport de socket "https"


Answers

Ne pas commenter la ligne: extension=php_openssl.dll dans php.ini

Question

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

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

et je reçois cette erreur ...

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é de l'activer lors de la configuration de PHP? ) dans C: \ Home etc etc ....

J'utilise un serveur IIS btw, (non ce n'est pas mon faire!) Donc je pense que c'est quelque chose à voir avec 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 un SSL, mais sur IMAP et cURL, c'est tout.

Des idées?




Disons que vous vouliez saisir NY Times, qui applique 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);

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

Je suppose que nous pouvons dire que stream_socket_client() ne parle pas d'URL.




Passer à ssl:// fonctionné pour moi mais j'ai continué à recevoir une réponse BAD REQUEST. J'ai trouvé que j'avais besoin d'ajouter une ligne 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";