Estoy ejecutando un script PHP y sigo recibiendo errores como:
Aviso: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php on line 10
Aviso: Undefined index: my_index C:\wamp\ww\mypath\index.php en la línea 11
Las líneas 10 y 11 se ven así:
echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];
¿Qué significan estos mensajes de error?
¿Por qué aparecen de repente? He utilizado este script durante años y nunca he tenido ningún problema.
¿Cómo puedo solucionarlos?
Esta es una pregunta de referencia general para que la gente la enlace como duplicado, en lugar de tener que explicar el problema una y otra vez. Creo que esto es necesario porque la mayoría de las respuestas del mundo real sobre este tema son muy específicas.
Meta discusión relacionada:
Pruebe estos
P1: este aviso significa que $varname no está
definido en el ámbito actual del script. ; P2: El uso de las condiciones isset(), empty() antes de usar cualquier variable sospechosa funciona bien.
// recommended solution for recent PHP versions
$user_name = $_SESSION['user_name'] ?? '';
// pre-7 PHP versions
$user_name = '';
if (!empty($_SESSION['user_name'])) {
$user_name = $_SESSION['user_name'];
}
O, como una solución rápida y sucia:
// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);
Nota sobre las sesiones:
Cuando se usan sesiones, se requiere colocar session_start();
dentro de todos los archivos que usan sesiones.
Generalmente por "mala programación", y por la posibilidad de cometer errores ahora o más tarde.
si (isset($nombredevariedad))
, antes de usarlaSignifica que estás probando, evaluando o imprimiendo una variable a la que todavía no has asignado nada. Significa que tienes un error de escritura, o que necesitas comprobar que la variable fue inicializada a algo primero. Comprueba tus rutas lógicas, puede que esté establecida en una ruta pero no en otra.