¿Cómo manejar la advertencia de la función file_get_contents() en PHP?

La función file_get_contents() en PHP es una función incorporada que se usa para leer un archivo en una string. La función utiliza técnicas de mapeo de memoria que son compatibles con el servidor y, por lo tanto, mejora el rendimiento, lo que la convierte en la forma preferida de leer el contenido de un archivo. 
La ruta del archivo a leer se envía como parámetro a la función y devuelve los datos leídos en caso de éxito y FALSO en caso de error.

Valor de retorno: Devuelve los datos leídos en caso de éxito y FALSO en caso de error.

Errores y excepciones: 

  • Si desea abrir un archivo con caracteres especiales, como espacios, primero debe codificarse con urlencode() .
  • La función file_get_contents() devuelve FALSO booleano, pero también puede devolver un valor no booleano que se evalúa como FALSO.
  • Se genera un error de nivel E_WARNING si no se puede encontrar el nombre del archivo, si la longitud máxima es inferior a cero o si falla la búsqueda del desplazamiento especificado en la transmisión.

Ejemplos:  

Input:  file_get_contents('https://www.geeksforgeeks.org/');
Output: A computer science portal for geeks

Input:  file_get_contents('gfg.txt', FALSE, NULL, 0, 14);
Output: A computer science portal for geeks

Programa 1: 

PHP

<?php
 
// Reading contents from the
// GeeksforGeeks homepage
$homepage = file_get_contents(
      "https://www.geeksforgeeks.org/");
echo $homepage;
 
?>

Errores de tiempo de ejecución: 

Advertencia de PHP: file_get_contents(): php_network_getaddresses: getaddrinfo falló: error del sistema en /home/3d11f9784b99e2c83058d5842d5533ce.php en la línea 5 
Advertencia de PHP: file_get_contents(https://www.geeksforgeeks.org/): no se pudo abrir el flujo: php_network_getaddresses: getaddrinfo falló : Error del sistema en /home/3d11f9784b99e2c83058d5842d5533ce.php en la línea 5

 
Producción: 

It will redirect to GeeksforGeeks Home Page

Programa 2: 

PHP

<?php
 
// Reading 36 bytes starting from
// the 0th character of gfg.txt
$text = file_get_contents('gfg.txt',
                  FALSE, NULL, 0, 36);
echo $text;
 
?>

Errores de tiempo de ejecución: 

Advertencia de PHP: file_get_contents(): php_network_getaddresses: getaddrinfo falló: error del sistema en /home/4659aeca06fdba457da0c5d78befb39a.php en la línea 6 
Advertencia de PHP: file_get_contents(gfg.txt): no se pudo abrir el flujo: no existe tal archivo o directorio en /home/4659aeca06fdba457da0c5d78befb39a. php en la línea 6

 Producción: 

It will display the content of gfg.txt file.
For Example: A computer science portal for geeks

Como podemos ver claramente, se han producido errores de tiempo de ejecución en el formulario Advertencia de PHP que fueron realmente inesperados. Aquí surgen las preguntas de eliminar estos errores, ¿hay alguna forma de manejar estos errores? 
Sí, PHP nos proporciona una solución sencilla.

PHP admite un operador de control de errores: el signo (@). Cuando se antepone a una expresión en PHP, cualquier mensaje de error que pueda generar esa expresión será ignorado. Por lo tanto, la advertencia de PHP anterior se puede suprimir simplemente insertando el operador de control de errores (@) antes de que la función llame a file_get_contents() de la siguiente manera:

Programa 1 actualizado:  

PHP

<?php
 
// Reading contents from the
// GeeksforGeeks homepage
$homepage = @file_get_contents(
      "https://www.geeksforgeeks.org/");
echo $homepage;
 
?>

Producción: 

It will redirect to GeeksforGeeks Home Page

Programa 2 actualizado: 

PHP

<?php
 
// Reading 36 bytes starting from
// the 0th character from gfg.txt
$text = @file_get_contents('gfg.txt',
                  FALSE, NULL, 0, 36);
echo $text;
 
?>

Producción: 

It will display the content of gfg.txt file.
For Example: A computer science portal for geeks

Entonces, después de agregar el símbolo ‘@’ , podemos ver que todas esas advertencias de PHP se suprimen y solo se muestra la salida como se muestra arriba.
Referencia: https://www.php.net/manual/en/language.operators.errorcontrol.php
 

Publicación traducida automáticamente

Artículo escrito por Pragya_Chaurasia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *