XAMPP Fehlerbeschreibung Warnmeldungen (z.B. Deprecated und Notice)

Wer sich eine Entwicklungs- und Testumgebung für seine Joomla-Projekte auf seiner lokalen Workstation per XAMPP aufgebaut hat, erhält beim Start seiner Projekt mitunter Fehlermeldungen, die entweder erst ab einer bestimmten Version von XAMPP auftreten oder aber auf dem Live-Webserver nicht vorhanden sind.

Ursache für diese Fehler- oder Warnmeldungen ist nicht das Joomla selbst sondern diese werden von PHP erzeugt in Abhänigigkeit davon welche PHP-Version installiert ist. Denn so kann es durchaus passieren, dass in Joomla verwendete PHP-Befehle mit einer neuen PHP-Version ihre Gültigkeit verlieren. Soll heißen, diese sind in veraltet und PHP möchte den Entwickler auf diesen Sachverhalt hinweisen.

Nun möchte man natürlich nicht selbst an Joomla Hand anlegen und alle als veraltet (deprecated) geltende Befehle austauschen. Hier hofft man dann doch lieber darauf, dass das Joomla-Entwicklerteam diese sugzessive eleminiert. Um dann aber trotzdem diese Fehlermeldungen zu vermeiden gibt es die Möglichkeit PHP diese abzugewöhnen.



In den PHP-Starteinstellungen von XAMPP kann konfiguriert werden, auf welche Fehler PHP mit Meldungen reagieren soll.

 

Ein Hinweis noch. Es muss nicht das Joomla selbst sein, welches die veralteten PHP-Befehle verwendet. Es kann auch nur eine der installierten Komponenten sein, gerne z.B. VirtueMart. Wenn das so ist, dann kann man das i.d.R. sehr gut an dem mit ausgebenen Pfad hinter der PHP-Warnmeldung erkennen, denn hier ist dann der Komponentenpfad aufgeführt.

Nachfolgend mal zwei typischen Warnmeldung von PHP und wie man diese los wird.

 

Deprecated: Assigning the return value of new by reference is deprecated in ...

Wenden wir uns zunächst dieser Warnmeldung zu, die darauf verweist, dass ein Befehl als veraltet gilt, und wo damit zu rechnen ist, dass es diesen in zukünftigen PHP-Versionen nicht mehr geben wird.

In unserem lokalen XAMPP-Installationspfad, üblich z.B. unter C:/xampp/ finden wir ein Verzeichnis /php/ und hier die o.g. PHP-Konfigurationsdatei php.ini. Diese wird mit einem Editor geöffnet und die Stelle gesucht, die mit error_reporting = beginnt. Hier finden wir per Standardkonfiguration den übergebenen Wert E_ALL.

Wenn man sich die auskommentierten Zeilen in der php.ini zu diesem Parameter mal anschaut, findet man hier schon Hinweise auf die Bedeutung der möglichen Parameter und wie man das Problem lösen kann.

Um also unsere Deprecated-Warnung loszuwerden, schreiben wir folgendes:

error_reporting = E_ALL & ~E_DEPRECATED

Nach Änderungen in der php.ini nie vergessen den XAMPP-Apache-Dienst zu stoppen und neu zu starten, damit PHP mit diesen neuen Parametern ausgeführt wird.

 

Notice: Undefined offset: -1

Dies kann eine weitere Warnmeldung im Level Hinweis sein. Durch oben genannte INI-Anweisung wird diese nicht erfasst. Wenn wir diese los werden wollen, müssen wir folgendes schreiben:

error_reporting = E_ALL & ~E_NOTICE

 

Direktiven kombinieren

Gut und schön, aber wenn jetzt sind die Notice-Meldungen weg, aber die Deprecated-Warnungen wieder da. Wir wollen aber beides unterdrücken. Dazu lassen sich die Parameter auch kombinieren. Die korrekte Syntax dafür sieht dann so aus:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE

 

Noch ein paar belehrende Anmerkungen zum PHP

Die nun durch uns unterdrückten PHP-Warnungen kommen natürlich nicht grundlos. Man sollte damit also nicht allzu ignorant umgehen und wenigstens hin und wieder diese Meldungen aktivieren um zu bemerken, was PHP zum Stand der Projekte meint.

Wer sich sein XAMPP-PHP-Verzeichnis mal anschaut, der wird feststellen, dass es noch Versionen php.ini-develeopment und php.ini-production gibt. Durch Umbenennen dieser Dateien zu php.ini kann man diese alternativ zu oben von mir vorgeschlagenen Modifikationen verwenden.