PHP Warnungen in separaten Error-Logs speichern

Es gibt viele gute Gründe, warum du PHP Warnungen ernst nehmen und beheben möchtest. Zum Einen werden aus vielen PHP Warnungen irgendwann Fehler – so wie zuletzt bei der Veröffentlichung von PHP 8. Zum Anderen, weil Warnungen oftmals ein Zeichen von „logischen“ Problemen sind.

Warnungen werden in Contao im normalen Betrieb nicht angezeigt, es sei denn der Debug-Modus (auch DEV-Mode genannt) ist aktiv. Nun ist es allerdings unter Umständen sehr mühselig durch jedes Template und durch jede Seite zu gehen, um eine Warnung zu bekommen.

Doch Contao verfügt ja schon seit einer ganzen Weile über einen eigenen Crawler, der Fehler findet und dokumentiert. Zum Beispiel Fehler 404 oder 500. PHP Warnungen gehören aber nicht dazu und bei aktiviertem Debug-Modus funktioniert der Contao Crawler nicht mehr so richtig.

Die Lösung: PHP Warnungen separat erfassen

Es gibt aber die Möglichkeit, den Monolog Logger so zu konfigurieren, dass er nicht nur schwere Fehler, sondern auch PHP Warnungen protokolliert. Dafür reichen ein paar wenige Anpassungen an der config.yaml:

1. Schritt:

Lege eine neue config/packages/monolog.yaml mit folgendem Inhalt an:

monolog:
  handlers:
    php_warnings:
      type: stream
      path: '%kernel.logs_dir%/php_warnings.log'
    level: warning

2. Schritt:

Importiere die monolog.yaml in die config/config.yaml:

imports:
  - { resource: packages/monolog.yaml }

Jetzt noch den Cache leeren und danach ganz normal den Contao Crawler starten. Das Ergebnis: Unter var/logs/php_warnings.log werden alle PHP-Warnungen mit den verursachten Dateien aufgeführt. Eine Liste, die du ganz einfach abarbeiten kannst.