Illegal offset type im Freetag-Plugin

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
qbi
Regular
Posts: 37
Joined: Sun Aug 05, 2018 6:52 pm
Contact:

Illegal offset type im Freetag-Plugin

Post by qbi »

Ich habe in meinem PHP-Errorlog einige Einträge der Art:

Code: Select all

[23-Nov-2021 12:04:43] WARNING: [pool www] child 7379 said into stderr: "[23-Nov-2021 12:04:43 Europe/Berlin] PHP Warning:  Illegal offset type in unset in …/plugins/serendipity_event_freetag/serendipity_event_freetag.php on line 1551"
Daraufhin versuchte ich in der betreffenden Datei mal ein var_dump(). Leider brachte mir das keine Offenbarung. Diese Ausgabe sieht in etwa so aus:
string(8) "chemnitz" NULL string(7) "commons" NULL string(8) "computer"
Das entspricht der Ausgabe funktionierender Seiten.

Habt ihr eine Idee, woher die Warnung kommt und wie ich wegbekommen kann?
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by onli »

Schau bitte zuerst, ob dir ein Pluginupdate zur Verfügung steht. Das Freetag-Plugin hat die aktuelle Version 3.70.3?
qbi
Regular
Posts: 37
Joined: Sun Aug 05, 2018 6:52 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by qbi »

Ja, das sieht gut aus:
Freie Artikel-Tags
serendipity_event_freetag
Erlaubt das freie Tagging von Artikeln
Weitere Informationen
Autor: Garvin Hicking, Jonathan Arkell, Grischa Brockhaus, Lars Strojny, Malte Paskuda, Ian
Version: 3.70.3
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by onli »

Okay.

Ich habe mir die Codestelle auf Github angesehen, https://github.com/s9y/additional_plugi ... .php#L1551, aber ich kopier sie hier rein:

Code: Select all

unset($tags[$tag]);
Ich würde vermuten, dass $tag entweder schon vorher entfernt wurde oder etwas absurdes ist, was nie gesetzt werden konnte (was auch immer, im Zweifel null). Du könntest dann vorher mit isset prüfen, was dann auch die Theorie bestätigt oder widerlegt:

Code: Select all

if (isset($tags[$tag])) {
    unset($tags[$tag]);
}
Die var_dump-Ausgabe sieht aber auch komisch aus, vielleicht ist das etwas anderes. Aber mit dem Check hier würde ich anfangen.
qbi
Regular
Posts: 37
Joined: Sun Aug 05, 2018 6:52 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by qbi »

So ich habe jetzt mal ein wenig weiter gegraben. Dein Vorschlag hat keine Änderungen gebracht.

Aber es scheinen nur bestimmte Abfragen diesen Fehler zu erzeugen. Beispiel: https://kubieziel.de/blog/archives/plug ... ag/vortrag

Der var_dump() erbringt dann:
NULL array(8) { [0]=> string(4) "spam" [1]=> string(9) "verlosung" [2]=> string(6) "berlin" [3]=> string(3) "vim" [4]=> string(3) "usa" [5]=> string(6) "plugin" [6]=> string(3) "tag" [7]=> string(7) "vortrag" }
Das NULL ist das Ergebnis von

Code: Select all

var_dump($tags[$tag]);
.
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by onli »

Hm, erscheint die Fehlermeldung jetzt laut Log in der Zeile vom if oder in der vom if umschlossenen?
qbi
Regular
Posts: 37
Joined: Sun Aug 05, 2018 6:52 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by qbi »

Dies erscheint außerhalb des if. Soweit ich erkennen kann, werden die Bedingungen innerhalb der if-Anweisung nicht ausgeführt.
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by onli »

Mir fällt nur noch ein, dass du vorher auch prüfen könntest das $tag nicht null ist, auch dass es ein String ist ist mit is_string prüfbar. In etwa so:

Code: Select all

if ($tag != null && is_string($tag) && isset($tags[$tag])) {
    unset($tags[$tag]);
}
Irgendein Wert für $tag sollte die Fehlermeldung produzieren.

Wenn es das nicht ist übersehe ich etwas oder habe einen Knoten im Kopf gerade.
qbi
Regular
Posts: 37
Joined: Sun Aug 05, 2018 6:52 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by qbi »

Das sieht gut aus. Ich kann die Fehlermeldung nicht mehr reproduzieren und in den letzten 500 Requests ist auch keine Meldung mehr zu finden. Danke!
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Illegal offset type im Freetag-Plugin

Post by onli »

Alles klar, dann pack ich das als Update ins Plugin :)
Post Reply