Problem in bb-settings

Nach dem Update auf PHP 5.2.5 bekam ich auf einer mei­ner ver­wal­te­ten Web­prä­sen­zen mit einem bbPress-Forum in der Ver­si­on 0.8.3 nun fol­gen­de Fehlermeldung:
Warning: Invalid argument supplied for foreach() in /.../bb-settings.php on line 173 / 169
Hier bekommt die ForEach-Schleife ein ungül­ti­ges Array von der Funk­ti­on glob() gelie­fert, wenn die­se auf einen Feh­ler trifft. Damit in solch einem Feh­ler­fall die ner­vi­ge Feh­ler­mel­dung nicht mehr auf­taucht, muss der Code in bb-settings.php ange­passt werden.
Die Funk­ti­on glob() lie­fert alle Ver­zeich­nis­na­men in einem Array zurück, die zu dem über­ge­be­nen Such-Pattern pas­sen. Hier­bei wird die glob() Funk­ti­on aus libc ein­ge­setzt. Wer­den kei­ne Datei­en bzw. Ver­zeich­nis­se gefun­den, die auf das Such­kri­te­ri­um pas­sen, lie­fert die Funk­ti­on ein lee­res Array zurück. Tritt ein Feh­ler bei der Aus­füh­rung auf, ist das Ergeb­nis FALSE. Und genau die­ser Feh­ler­fall führt zu der oben beschrie­be­nen Fehlermeldung.
FALSE ist ein Wahr­heits­wert (boolean) und kein Array und darf somit nicht dem ForEach-Kommando in bb-settings.php in der Zei­le 173 (bzw. in der Ver­si­on 0.8.3.1 in Zei­le 169) über­ge­ben wer­den. Um dies zu ver­hin­dern, muss die­ser Feh­ler­fall vor­her über­prüft wer­den. Dies kann mit der fol­gen­den Code-Anpassung erreicht werden:
Ori­gi­na­ler Code in bb-settings.php der Ver­si­on 0.8.3 ab Zei­le 172168:

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

Anpas­sung:

if ( is_callable( 'glob' ) ) {
    $pluginarray = glob(BBPLUGINDIR . '_*.php');
    if ($pluginarray)
        foreach ( $pluginarray as $_plugin )
            require($_plugin);
}

Es sei hier noch erwähnt, dass mit die­ser Ände­rung nicht gleich auf­fällt, ob PlugIns, wel­che mit einem Unter­strich anfan­gen, auch wirk­lich gela­den wer­den oder ob hier ein Feh­ler auf­tritt. Man merkt dies aber dann, wenn eben die gewünsch­te Erwei­te­rung nicht vor­han­den ist.

2

Kommentare

  1. Vilius  Dezember 22, 2007

    Dan­ke dir, hat gewirkt! Die Pro­ble­me sind weg!

    antworten

Schreibe einen Kommentar


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.