transports socket sobreescribir registered fputs espaƱol php iis fsockopen

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: //