sobreescribir - socket transport php
No se puede encontrar el transporte de socket "https" (6)
Cambiar a ssl://
funcionó para mí, pero seguí recibiendo una respuesta MALA PETICIÓN. Descubrí que necesitaba agregar una línea más para declarar explícitamente mi encabezado de host como se describe here y asegurarme de haber actualizado mi HTTP de HTTP/1.0
a HTTP/1.1
:
$header .= "POST /cgi-bin/webscr HTTP/1.1/r/n";
$header .= "Host: www.sandbox.paypal.com/r/n";
Estoy usando esto para verificar la disponibilidad de una URL:
$fp = fsockopen($url, 443, $errno, $errstr);
y recupero este error ...
Advertencia: fsockopen () [function.fsockopen]: no se puede conectar a https://example.com/soapserver.php:443 (No se pudo encontrar el transporte de socket "https" - ¿Olvidaste habilitarlo cuando configuraste PHP? ) en C: / Home etc etc ...
Estoy usando un servidor IIS por cierto, (no, no es mi trabajo!) Así que creo que tiene algo que ver con no tener open-ssl, pero no estoy seguro. ¿Alguien puede ayudar, por favor?
Hice un phpinfo () y tengo ssl, pero en IMAP y cURL, eso es todo.
¿Algunas ideas?
Compruebe curl instalado o no para php. si no está instalado, instale el rizo. para Windows Descomenta la línea: extension = php_openssl.dll en php.ini, para ubuntu sudo apt-get install php-curl
Debería usar solo el nombre de host, no la URL en la llamada fsockopen. Tendrá que proporcionar el uri, menos el host / puerto en los encabezados HTTP reales. Como señaló @Martijin, y como se detalla en la página del manual, deberá introducir el nombre de su servidor con ssl: // para SSL o tls: // si usa la seguridad de la capa de transporte.
Página de manual para fsockopen. Mira el Ejemplo # 1.
Descomenta la línea: extension=php_openssl.dll
en php.ini
Digamos que quería tomar NY Times, que impone HTTPS:
Incorrecto:
$client = stream_socket_client(''https://www.nytimes.com'', $errno, $errstr, 30);
Correcto:
$client = stream_socket_client(''tcp://www.nytimes.com:443'', $errno, $errstr, 30);
Tenga en cuenta que he reemplazado https://
con tcp://
y he añadido el puerto 443 al nombre de host.
Supongo que podemos decir que stream_socket_client()
no habla URLs.
también para ssl debe prefijar el host con ssl: //