Nach dem Update auf PHP 5.2.5 bekam ich auf einer meiner verwalteten Webpräsenzen mit einem bbPress-Forum in der Version 0.8.3 nun folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach() in /.../bb-settings.php on line 173 / 169
Hier bekommt die ForEach-Schleife ein ungültiges Array von der Funktion glob()
geliefert, wenn diese auf einen Fehler trifft. Damit in solch einem Fehlerfall die nervige Fehlermeldung nicht mehr auftaucht, muss der Code in bb-settings.php angepasst werden.
Die Funktion glob()
liefert alle Verzeichnisnamen in einem Array zurück, die zu dem übergebenen Such-Pattern passen. Hierbei wird die glob()
Funktion aus libc
eingesetzt. Werden keine Dateien bzw. Verzeichnisse gefunden, die auf das Suchkriterium passen, liefert die Funktion ein leeres Array zurück. Tritt ein Fehler bei der Ausführung auf, ist das Ergebnis FALSE
. Und genau dieser Fehlerfall führt zu der oben beschriebenen Fehlermeldung.
FALSE
ist ein Wahrheitswert (boolean) und kein Array und darf somit nicht dem ForEach-Kommando in bb-settings.php in der Zeile 173 (bzw. in der Version 0.8.3.1 in Zeile 169) übergeben werden. Um dies zu verhindern, muss dieser Fehlerfall vorher überprüft werden. Dies kann mit der folgenden Code-Anpassung erreicht werden:
Originaler Code in bb-settings.php der Version 0.8.3 ab Zeile 172⁄168:
if ( is_callable( 'glob' ) ) foreach ( glob(BBPLUGINDIR . '_*.php') as $_plugin ) require($_plugin);
Anpassung:
if ( is_callable( 'glob' ) ) { $pluginarray = glob(BBPLUGINDIR . '_*.php'); if ($pluginarray) foreach ( $pluginarray as $_plugin ) require($_plugin); }
Es sei hier noch erwähnt, dass mit dieser Änderung nicht gleich auffällt, ob PlugIns, welche mit einem Unterstrich anfangen, auch wirklich geladen werden oder ob hier ein Fehler auftritt. Man merkt dies aber dann, wenn eben die gewünschte Erweiterung nicht vorhanden ist.
NOV