Jeg kører et PHP-script og modtager fortsat fejl som:
Notice: Udefineret variabel: my_variable_name i C:\wamp\www\mypath\index.php på linje 10
Bemærk: Udefineret indeks: my_index i C:\wamp\www\mypath\index.php på linje 11
Linje 10 og 11 ser således ud:
echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];
Hvad er betydningen af disse fejlmeddelelser?
Hvorfor vises de pludselig? Jeg har brugt dette script i årevis, og jeg har aldrig haft problemer.
Hvordan kan jeg rette dem?
Dette er et generelt reference-spørgsmål, som folk kan linke til som duplikat, i stedet for at skulle forklare problemet igen og igen. Jeg føler, at dette er nødvendigt, fordi de fleste reelle svar på dette spørgsmål er meget specifikke.
Relateret Meta-diskussion:
Prøv disse
Q1: denne meddelelse betyder, at $varname ikke er defineret i den aktuelle rækkevidde af script.
Q2: Brug af isset(), empty() betingelser før brug af en mistænkelig variabel virker godt.
// 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'];
}
Eller, som en hurtig og beskidt løsning:
// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);
Bemærk om sessioner:
Når man bruger sessioner, skal session_start();
placeres i alle filer, der bruger sessioner.
Generelt på grund af dårlig programmering og muligheden for fejl nu eller senere.
if (isset($varname))
, før du bruger denDet betyder, at du tester, evaluerer eller udskriver en variabel, som du endnu ikke har tildelt noget til. Det betyder, at du enten har en skrivefejl, eller at du skal kontrollere, at variablen først er initialiseret til noget. Kontroller dine logikveje, den kan være indstillet i én vej, men ikke i en anden.