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 Feh­ler­mel­dung:
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 wer­den.
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 Feh­ler­mel­dung.
FALSE ist ein Wahr­heits­wert (boole­an) 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 wer­den:
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

Lassen Sie eine Antwort, um Vilius
Klicken Sie hier, um die Antwort abzubrechen


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