Hallo MB,
woher hast Du deinen Code kopiert? Denn mit Handbuchlesen und selberschreiben wäre Dir das vermutlich nicht passiert.
https://www.php.net/manual/de/function.set-error-handler.php
errcontext
Der fünfte Parameter errcontext ist optional. Es handelt sich um ein Array, das auf die Stelle der aktiven Symboltabelle zeigt, die den Fehler verursacht hat. Mit anderen Worten: errcontext enthält ein Array mit allen Variablen, die im fehlerauslösenden Bereich existierten. Die benutzerdefinierte Fehlerbehandlung darf den Fehlerkontext nicht verändern.
Wenn Du also den Fehlerkontext $trace
nennst, dient das zwar optimal zur Verwirrung der Russen - äh, heutzutage wohl eher Chinesen - aber es nützt weder Dir noch uns wirklich.
Die Lösung ist demnach: es gab bei Dir im fraglichen Moment keine anderen sichtbaren Variablen als die Superglobals.
Ich habe das unter Windows auch mal laufen lassen, als Kommandozeilen-Script, da sieht das Ergebnis so aus (ein paar Zeilenbrüche und etliche Einträge von $_SERVER habe ich gelöscht). Aber das ist vermutlich von php.ini zu php.ini und von Betriebssystem zu Betriebssystem verschieden.
array(5) {
[0]=>
int(2)
[1]=>
string(16) "Division by zero"
[2]=>
string(24) "***\divzero.php"
[3]=>
int(10)
[4]=>
array(8) {
["_GET"]=>array(0) { }
["_POST"]=>array(0) { }
["_COOKIE"]=>array(0) { }
["_FILES"]=>array(0) { }
["argv"]=>array(1) {
[0]=>string(24) "***\divzero.php"
}
["argc"]=>int(1)
["_SESSION"]=>&array(0) { }
["_SERVER"]=>array(60) {
["ALLUSERSPROFILE"]=>string(14) "C:\ProgramData"
...
["REQUEST_TIME"]=>int(1569258873)
["argv"]=>array(1) {
[0]=>string(24) "***\divzero.php"
}
["argc"]=>int(1)
}
}
}
Rolf
sumpsi - posui - clusi