Syntax-Checks für PHP

Web-Applikationen lassen sich heutzutage schnell und einfach in PHP oder anderen Skript-Sprachen entwickeln. Große Programmierkenntnisse sind dazu oft nicht notwendig. Leider werden Webseiten viel zu oft nach nur einem groben Funktionstest im Netz veröffentlicht. Ein Fehlverhalten ist damit meist vorprogrammiert.

Es mag vielleicht trivial klingen, aber zu den grundsätzlichen Tests einer Website gehört zunächst der generelle Syntax-Check aller Quelltexte. Sucht man bei Google nach Schlagworten wie "failed opening for inclusion" oder ähnlichem, so findet man eine erschreckend große Anzahl an Webseiten, deren Skripte einfach fehlerhaft sind. Dabei sind nahezu alle Skript-Sprachen mit einem integrierten Syntax-Check ausgestattet. Perl-Skripte können mit

perl -c dateiname

geprüft werden, PHP-Skripte mit

php -l dateiname

Um einer öffentlichen Preisgabe von Fehler-Informationen vorzubeugen, kann man beispielsweise für PHP die Fehler-Ausgabe durch die Direktive

display_errors = Off

in der Konfigurationsdatei "php.ini" deaktivieren. Noch besser ist es, eine ordentliche Fehlerbehandlung zu implementieren, beispielsweise das Mitloggen von Fehlern in einer Logdatei. Am besten ist es jedoch, erst gar keine fehlerhaften Skripte im Netz zu veröffentlichen. Dazu reicht es im wesentlichen aus, regelmäßig ein

find / -name "*.php" -print0 | xargs -0 -n 1 php -l

auszuführen. Damit werden alle gefundenen PHP-Skripte auf ihre korrekte Syntax geprüft. Allerdings bricht xargs die Verarbeitung der Dateien ab, sobald ein Programm einen Exitcode ungleich Null zurück liefert. Das ist aber sowohl bei perl -c als auch bei php -l der Fall, wenn diese einen Fehler im Quelltext feststellen.

Eine etwas komfortablere Lösung für Syntax-Checks bietet das Shell-Skript "test_syntax.sh", das sich im Anhang befindet. In dem Skript werden Syntax-Checks für PHP-, Perl-, Ruby- und Python-Skripte im aktuellen oder in dem über die Kommandozeile angegebenen Verzeichnis durchgeführt.

AttachmentSize
test_syntax.sh.gz1.66 KB