Illegal string offset 'id' in ...

Fragen und Diskussionen zu laufenden ConPresso 4.x Projekten werden in diesem Forum diskutiert.
Neidl
ConPresso-User
Beiträge: 25
Registriert: 16.10.2007 14:58
Danksagung erhalten: 1 Mal

Beitrag von Neidl »

An die PHP.ini komm ich ja nicht ran, in einem Webspace-Paket
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Hier beschweren sich viele Entwickler massiv über dieses Problem
https://bugs.php.net/bug.php?id=61354

allerdings argumentieren die PHP-Entwickler nur, das der Code eben schlampig programmiert wurde. Man müsse ja nur ein paar tausend htmlspecialchars() nochmal umschreiben...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

MarkusR hat geschrieben:allerdings argumentieren die PHP-Entwickler nur, das der Code eben schlampig programmiert wurde. Man müsse ja nur ein paar tausend htmlspecialchars() nochmal umschreiben...
"schlampig programmiert" ist gut. Hätte man das nämlich getan und als Charset einfach einen leeren String "" angegeben, würde es wie bisher laufen. Denn die Entwickler haben zwar den Default auf UTF-8 geändert, aber wenn ein unbekannter String angegeben wird, wird doch wieder ISO-8859-1 benutzt...

Im Moment kann ich vor dem Einsatz von PHP 5.4 nur warnen. Es ist nicht nur ConPresso, was auf diesem System Probleme hat.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

MarkusR hat geschrieben:in _include/function.php

Finde

Code: Alles auswählen

$rubrics = array(0=>'');
und ersetze es durch

Code: Alles auswählen

$rubrics = array(0=>array('id'=>'','directory'=>'','name'=>'','seclevel'=>''));
Habe es jetzt selbst mal mit PHP 5.4.7 getestet... es gibt zwar keine Fehler mehr, dafür aber auch keine externen URLs.

Daher habe ich

Code: Alles auswählen

$rubrics = array(0=>array('id'=>NULL,'directory'=>NULL,'name'=>NULL,'seclevel'=>NULL));
benutzt, nun geht es, soweit ich das beurteilen kann.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hallo,

ich kann das Problem in PHP Version 5.4.4 nicht nachvollziehen. In welchen Fällen tritt es denn auf?

Eine Navigation wird hier sowohl mit Rubriken, als auch mit externen Links ohne eine Warnung ausgegeben.

Ich sehe wohl das mögliche Problem im Code, aber ich kann es halt nicht prüfen.

Balu
Bartels.Schöne
ConPresso Support & Development
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

In 5.4.7 erzeugt folgender Code die Fehlermeldung

Code: Alles auswählen

$test = '';
if ($test['id']=="test") echo "test";
Warning: Illegal string offset 'id' in test.php on line 2

Und genau das passiert ja beim Zusammenspiel von getNavigation und printNavigation...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Interessant. In 5.4.4 wird keine Meldung ausgegeben, obwohl ich display_errors eingeschaltet habe und auch Warnings ausgegeben werden sollten.

Ich übernehme das jetzt einfach mal von Dir. Deine Lösung ist auf jeden Fall sinnvoll.

Balu
Bartels.Schöne
ConPresso Support & Development
Antworten