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?
6 réponses
même pour ssl vous devez préfixer l'hôte avec ssl: / /
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.
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.
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
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";