2012-09-10 16 views
12

Este sitio ha estado funcionando desde hace varios meses y ha estado funcionando bien. Tengo una página PHP que crea una factura a partir de datos en la url (por ejemplo, viewinvoice.php? Id = 250 crea una factura basada en el registro 250). Esta página es accesible a través de un navegador web y funciona bien.¿Qué causaría que curl devuelva false al intentar acceder a un archivo local?

En una página completamente diferente (es decir, test.php), intento acceder a ese archivo mediante cURL. Sin embargo, cuando realizo la llamada y var_dump los resultados, obtengo bool (falso).

Aquí está la función que hace la llamada cURL:

function file_get_contents_curl($url) { 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 

$data = curl_exec($ch); 
curl_close($ch); 

return $data; 
} 

HOME es una constante que indica la dirección URL completa (por ejemplo http://www.example.com/).

$invoice_contents = file_get_contents_curl(HOME.'viewinvoice.php?id=242'); 
echo $invoice_contents; 
var_dump($invoice_contents); 

He intentado cambiar la URL a una URL externa (es decir http://www.google.com/) y la página se carga muy bien. Obtengo la página de inicio de google. Pero cualquier página que esté en el mismo dominio no se cargará. ¿Hay alguna razón para que esto suceda?

No soy el administrador del servidor, pero tengo acceso de root al servidor. No he cambiado ninguna configuración recientemente, pero el administrador del servidor puede haber actualizado la versión de apache o php?

En cualquier caso, ¿hay alguna configuración que pueda modificar para que esto vuelva a funcionar?

P.S. Intenté hacer esta llamada exacta desde un servidor externo (dominio diferente) y funciona muy bien.

Respuesta

36

Después de su ejecución rizo, poner algo como esto:

echo curl_getinfo($ch) . '<br/>'; 
echo curl_errno($ch) . '<br/>'; 
echo curl_error($ch) . '<br/>'; 

verás lo que falló durante su ejecución rizo.

Más información: curl_getinfocurl_errnocurl_error

+1

he añadido estas líneas justo antes de curl_close ($ ch) y fue capaz de ver más sobre la solicitud. Definitivamente usaré este enfoque en el futuro. Lamentablemente, el problema se solucionó antes de que comenzara a probar esto, por lo que no hubo errores presentes. El sitio volvió a funcionar como lo hacía antes. Nunca pensé que diría que desearía que todavía estuviera roto, pero ya que no tengo idea de qué fue lo que salió mal ... Desearía que fuera así. Si vuelve a ocurrir, me aseguraré de usar esta información. – codescribblr

2

Después de la ejecución poner esta variable a probar sus errores

echo "<pre>"; 
var_dump(curl_getinfo($ch)) . '<br/>'; 
echo curl_errno($ch) . '<br/>'; 
echo curl_error($ch) . '<br/>'; 
Cuestiones relacionadas