2010-11-09 13 views

Respuesta

16

Cualquier función que use el contenedor HTTP para acceder a un archivo remoto como si fuera local generará automáticamente una variable local llamada $http_response_header en el ámbito local. Puede acceder a esa variable para encontrar información sobre lo que sucedió en una llamada al fopen, file_get_contents ... en un archivo remoto.

Puede suprimir la advertencia utilizando @: @file_get_contents.

Si no se preocupan por lo que el error fue, puede utilizar @file_get_contents y comparar el resultado con false:

$content = @file_get_contents(url); 
if ($content === false) { /* failure */ } else { /* success */ } 
+0

¡Exactamente lo que necesitaba, gracias! –

6

Se podría hacer una solicitud adicional (HEAD) para averiguar en primer lugar, por ejemplo,

$response = get_headers($url); 
if($response[1] === 'HTTP/1.1 200 OK') { 
    $content = file_get_contents($url); 
} 

O se puede decir file_get_contents ignorar los errores y la fuerza-recoger el resultado de la $url modificando el contexto de secuencia:

echo file_get_contents(
    'http://www.example.com/foo.html', 
    FALSE, 
    stream_context_create(array('http'=>array('ignore_errors' => TRUE))) 
)