Escribí un código PHP como este
$site="http://www.google.com";
$content = file_get_content($site);
echo $content;
Pero cuando elimino "http: //" $siterecibo la siguiente advertencia:
Advertencia: file_get_contents (www.google.com) [function.file-get-contents]: no se pudo abrir la transmisión:
Lo intenté tryy catchno funcionó.
php
function
exception-handling
warnings
Waseem
fuente
fuente

Respuestas:
Paso 1: verifique el código de retorno:
if($content === FALSE) { // handle error here... }Paso 2: suprima la advertencia colocando un operador de control de errores (es decir
@) delante de la llamada para file_get_contents () :$content = @file_get_contents($site);fuente
@puede afectar negativamente el rendimiento. Vea esta respuesta en una publicación relacionada que explica bastante bien.También puede configurar su controlador de errores como una función anónima que llama a una excepción y usar un try / catch en esa excepción.
Parece una gran cantidad de código para detectar un pequeño error, pero si usa excepciones en toda su aplicación, solo necesitaría hacer esto una vez, en la parte superior (en un archivo de configuración incluido, por ejemplo), y lo hará Convierta todos sus errores a Excepciones en todo momento.
fuente
Mi forma favorita de hacer esto es bastante simple:
Encontré esto después de experimentar con el
try/catch@enobrev anterior, pero esto permite un código menos extenso (e IMO, más legible). Simplemente utilizamoserror_get_lastpara obtener el texto del último error yfile_get_contentsdevuelve falso en caso de error, por lo que un simple "si" puede captar eso.fuente
@file_get_contentssuprima el informe de errores al navegador.@file_get_contentspara suprimir la advertencia y probar el valor del resultado usando=== FALSE.if (false !== ($data = file_get_contents ()))error_get_lastque no devuelva nada en mi experienciaPuedes anteponer una @:
$content = @file_get_contents($site);Esto eliminará cualquier advertencia. ¡Úselo con moderación! . Ver operadores de control de errores
Editar: cuando elimina el 'http: //' ya no busca una página web, sino un archivo en su disco llamado "www.google ....."
fuente
Una alternativa es suprimir el error y también lanzar una excepción que puede detectar más adelante. Esto es especialmente útil si hay múltiples llamadas a file_get_contents () en su código, ya que no necesita suprimirlas y manejarlas todas manualmente. En cambio, se pueden hacer varias llamadas a esta función en un solo bloque try / catch.
fuente
Así es como lo hice ... No es necesario el bloque try-catch ... La mejor solución es siempre la más simple ... ¡Disfruta!
fuente
$http_response_headerno se actualiza en ese caso, ya que no se recibe respuesta HTTP.fuente
$urlno se encuentra el 404, aún aparecerá la advertencia.ignore_errorssolo indica al contexto HTTP que no interprete los códigos de estado de respuesta HTTP > = 400 como errores. Si bien está marginalmente relacionado, eso no responde a la pregunta sobre el manejo de errores de PHP.ignore_errorsopción! ¡Esto es lo que necesitaba!Así es como manejo eso:
fuente
Lo mejor sería configurar sus propios controladores de errores y excepciones, que harán algo útil como registrarlo en un archivo o enviar correos electrónicos críticos. http://www.php.net/set_error_handler
fuente
Podrías usar este script
fuente
if ($url === true)...porque si se obtiene como respuesta0o está vacío, aumenta el error de conexión.Desde PHP 4 use error_reporting () :
fuente
La manera más simple de hacer esto es anteponer una @ antes de file_get_contents, i. mi.:
fuente
algo como esto:
fuente
fuente
Debe usar la función file_exists () antes de usar file_get_contents (). De esta manera evitarás la advertencia de php.
fuente
Cambiar el archivo php.ini
fuente
Esto intentará obtener los datos, si no funciona, detectará el error y le permitirá hacer todo lo que necesite dentro de la captura.
fuente
fuente
También debe configurar el
en tu
php.inipara dejar de recibir advertencias.fuente