PHP7 rächt Nachlässigkeit

Immer wieder kommt es zu Problemen, wenn PHP Versionen größer 5.3 installiert werden. Ab und an gehe ich auf Fehlersuche.

Log Dateien geben nicht unbedingt Auskunft – ich rufe mit der Konsole die index.php auf und arbeite mich, von da an im Gesamtwerk, weiter.

Integer Dezimal gedacht, Octal programmiert

Beschäftigt hat mich ein, im Browser nicht aufrufbaren Code, der diese Fehlermeldung erzeugte: Parse error: Invalid numeric literal in…………

Den „Fehler“, der keiner ist, findet man schnell. Seit PHP5.4 wird eine Zahl, mit vorangestellter 0 (Null) nicht als dezimal Integer sondern octal interpretiert. Für PHP ist 08 nicht 8 weil es Octal keine 8 gibt! Würde man 0x8 schreiben, ist die Zahl 8 Hexadezimal und auch dezimal 8 – octal allerdings 10.

Es muss also beim programmieren streng darauf geachtet werden, in welchem Zahlensystem man sich denn befindet. Abhilfe könnte ein Code Review mit suchen/ersetzen Bash Lauf sein, will man nicht File für File im VI Editor lesen.

Octales Zahlensystem im Vergleich zu dezimal, hexdezimal und binär. Quelle: Wikipedia