2009-02-12 16 views
12

Acabo de mover un proyecto de localhost a mi servidor remoto, y noté que algunos de mis scripts dejaron de funcionar. Lo más importante fue uno que confió en file_get_contents() para obtener valores JSON de otra secuencia de comandos.

PHP versión 5.2.4 es
allow_url_fopen está en ON

Advertencia: file_get_contents()[function.file-get-contents]: php_network_getaddresses: getaddrinfo falló: Nombre o servicio no conocido en /var/www/html/2009/functions/functions.products.php en line 5

Advertencia: file_get_contents(http://data.example.com/new-data.php) [function.file-get-contents]: No se pudo para abrir la corriente: Success in /var/www/html/2009/functions/functions.products.php en line 5

El guión está siendo corrió desde: http://www.example.com
La ubicación introducida en la función es http://data.example.com/new-data.php

Nota: nombre de dominio mismo, pero dos servidores diferentes.

function getData() { 
    $location = "http://data.mysite.com/new-data.php"; 
    $contents = file_get_contents($location); 
    $jsonVars = json_decode($contents); 
    return $jsonVars 
} 
+0

Tiene que haber un error en su registro de errores en algún lugar o algo devuelto. Necesito más información –

+0

Sí. Los errores serían agradables. –

+0

Si new-data.php está en el mismo servidor que el script que lo llama, ¿por qué no solo le pasa la ruta en lugar de una URL? –

Respuesta

18

Nombre o servicio no conocen

DNS está en quiebra. ¿Puedes ping data.mysite.com desde un armazón en la máquina (suponiendo que tengas uno)?

Intente reemplazar data.mysite.com con una dirección IP fija por el momento.

+0

Ahora estamos llegando a algún lado. No pude encontrarlo – Sampson

+0

¿Puede acceder a * cualquier * sitio por nombre desde el servidor? p.ej. 'ping google.com'. Si no es así, probablemente te falten algunas configuraciones del servidor de nombres en /etc/resolv.conf. – bobince

+0

Esto fue todo. Solo tuve que reemplazar la URL con la dirección IP. Gracias. – Sampson

0

Por favor incluya más información, ¿$ contiene algo? Recuerde hacer json_decode ($ contents, true) si lo quiere como una matriz php; de lo contrario, se devuelve una stdClass.

¿Podría haber un problema para resolver el nombre de host? es data.mysite.com la misma máquina que mysite.com?

1

Mire su/etc/hosts en el servidor remoto. Si está vacío, debes agregar '127.0.0.1 localhost' a él.

A menos que sea una de las variedades de VPS donde la interfaz loopback golpea la máquina externa; en esos, necesita usar el número de IP de su VPS en lugar de 127.0.0.1.

+0

Localhost (LH), Nuevo host (NH) y Data-Provider (DP). Esas son mis tres máquinas involucradas. LH podría obtener los datos de DP, pero NH no puede. ¿Estás diciendo que necesito verificar/etc/hosts de NH o DP? – Sampson

7

También puede probar rizo:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_URL, 'http://url.url'); 
$result = curl_exec($curl); 
curl_close($curl); 

y se obtiene lo que quiere en $result.

1

Si está seguro de que no es un problema de DNS, intente reiniciar Apache. Esto lo resolvió después de 20 minutos de rascarse la cabeza.

Cuestiones relacionadas