Solución:
No puedes abrir una conexión directamente a un camino en un host remoto usando fsockopen
. La url www.mydomain.net/1/file.php
contiene una ruta, cuando el único valor válido para ese primer parámetro es el host, www.mydomain.net
.
Si está intentando acceder a una URL remota, file_get_contents () es su mejor opción. Puede proporcionar una URL completa a esa función, y obtendrá el contenido en esa ubicación mediante una solicitud HTTP normal.
Si solo desea enviar una solicitud HTTP e ignorar la respuesta, podría usar fsockopen()
y envíe manualmente los encabezados de solicitud HTTP, ignorando cualquier respuesta. Sin embargo, podría ser más fácil con cURL, o simplemente con el viejo fopen (), que abrirá la conexión pero no necesariamente leerá ninguna respuesta. Si quisieras hacerlo con fsockopen()
, podría verse así:
$fp = fsockopen("www.mydomain.net", 80, $errno, $errstr, 30);
fputs($fp, "GET /1/file.php HTTP/1.1n");
fputs($fp, "Host: www.mydomain.netn");
fputs($fp, "Connection: closenn");
Por supuesto, eso deja cualquier manejo de errores en tus manos, pero significaría que no perderías el tiempo leyendo la respuesta.
Tuve un problema similar en mi servidor de pruebas local y dominios de prueba locales, por ejemplo: www.testdomain.loc con la función GetImageSize()
;
Lo resolvió agregando el nombre de host en el archivo de hosts en el servidor local:
En el archivo / etc / hosts Yo añadí:
192.168.1.1 www.testdomain.loc
Espero que esto ayude a alguien
Si solo desea enviar datos GET a la URL, debe usar algo sencillo como file_get_contents ();
$myGetData = "?var1=val1&var2=val2";
file_get_contents($url.$myGetData);