Problem in bb-settings

Nach dem Update auf PHP 5.2.5 be­kam ich auf ei­ner mei­ner ver­wal­te­ten Webpräsenzen mit ei­nem bbPress-Forum in der Version 0.8.3 nun fol­gen­de Fehlermeldung:
Warning: Invalid ar­gu­ment sup­plied for fo­reach() in /.../bb-settings.php on li­ne 173 / 169
Hier be­kommt die ForEach-Schleife ein un­gül­ti­ges Array von der Funktion glob() ge­lie­fert, wenn die­se auf ei­nen Fehler trifft. Damit in solch ei­nem Fehlerfall die ner­vi­ge Fehlermeldung nicht mehr auf­taucht, muss der Code in bb-settings.php an­ge­passt wer­den.
Die Funktion glob() lie­fert al­le Verzeichnisnamen in ei­nem Array zu­rück, die zu dem über­ge­be­nen Such-Pattern pas­sen. Hierbei wird die glob() Funktion aus libc ein­ge­setzt. Werden kei­ne Dateien bzw. Verzeichnisse ge­fun­den, die auf das Suchkriterium pas­sen, lie­fert die Funktion ein lee­res Array zu­rück. Tritt ein Fehler bei der Ausführung auf, ist das Ergebnis FALSE. Und ge­nau die­ser Fehlerfall führt zu der oben be­schrie­be­nen Fehlermeldung.
FALSE ist ein Wahrheitswert (boole­an) und kein Array und darf so­mit nicht dem ForEach-Kommando in bb-settings.php in der Zeile 173 (bzw. in der Version 0.8.3.1 in Zeile 169) über­ge­ben wer­den. Um dies zu ver­hin­dern, muss die­ser Fehlerfall vor­her über­prüft wer­den. Dies kann mit der fol­gen­den Code-Anpassung er­reicht wer­den:
Originaler Code in bb-settings.php der Version 0.8.3 ab Zeile 172 / 168:

if ( is_callable( 'glob' ) )
    fo­reach ( glob(BBPLUGINDIR . '_*.php') as $_plugin )
        require($_plugin);

Anpassung:

if ( is_callable( 'glob' ) ) {
    $plug­i­nar­ray = glob(BBPLUGINDIR . '_*.php');
    if ($plug­i­nar­ray)
        fo­reach ( $plug­i­nar­ray as $_plugin )
            require($_plugin);
}

Es sei hier noch er­wähnt, dass mit die­ser Änderung nicht gleich auf­fällt, ob PlugIns, wel­che mit ei­nem Unterstrich an­fan­gen, auch wirk­lich ge­la­den wer­den oder ob hier ein Fehler auf­tritt. Man merkt dies aber dann, wenn eben die ge­wünsch­te Erweiterung nicht vor­han­den ist.

2

Kommentare

  1. Vilius  Dezember 22, 2007

    Danke dir, hat ge­wirkt! Die Probleme sind weg!

    antworten

Schreibe einen Kommentar