Fehlermeldung: libraries/vendor/joomla/registry/src/Format/Json.php on line 50

  • Hallo,


    mein error_log meldet folgende Fehlermeldung:


    [08-Nov-2015 23:23:51 UTC] PHP Warning: trim() expects parameter 1 to be string, array given in /xxx/xxx/xxx/libraries/vendor/joomla/registry/src/Format/Json.php on line 50


    weiß leider nicht was da nicht stimmt, da ich mit php nicht so "befreundet" bin.


    Hier die Json.php



    Falls ich im falschen Forum geschrieben habe, entschuldige ich mich dafür und bitte um verschiebung.


    Hoffe auf eine baldige hilfestellung.


    Vielen Dank


    LG
    FlexMax

  • Hallo @flexmax90,


    ich habe mir das gerade mal angesehen. Diese Funktion wird im Core an keiner Stelle falsch aufgerufen sondern nur definiert.


    Das Problem an dieser Stelle ist das anscheinend irgendeine 3Party Erweiterung diese Funktion mit einem Array als Parameter und nicht (wie erwartet) als string übergibt.


    Der einfachste Weg wird es sein alle PHP Dateien in deiner Joomla Installation nach der Zeichenkombination:


    Code
    stringToObject

    zu durchsuchen und dann gucken welcher Wert an die Funktion übergeben wird. Ich gehe schwer davon aus das eine 3Party Erweiterung irgendwo einen Call mit einem Array macht.


    Wenn du uns die Fundstellen (also die Erweiterungen) welche diese Funktion aufrufen nennen kannst (in welchem Pfad wurde der Funktionsaufruf gefunden ;))


    Dann müsste man sich diese Erweiterungen bzw. den Code drumherum mal genauer ansehen. ;)


    Also was du machen könntest.


    - Backup deiner Joomla Installation
    - Backup lokal entpacken
    - Alle (PHP) Dateien nach dem vorkommen von

    Code
    stringToObject

    durchsuchen.
    - Alle Fundstellen hier posten am besten immer den gesamten Datei Inhalt wo die Funktion aufgerufen wird (Bitte Spoiler benutzen!)
    - Dann kann man die einzelnen Funktionsaufrufe nach und nach überprüfen...
    - ...Und so versuchen den Übeltäter zu finden. ;)


  • vielen dank für deine hilfe. Hat super geklappt.


    Hier das ergebnis :


  • Exakt selbe Ausgabe wie bei blankem Core.


    Dann hätte ich erst mal
    \libraries\vendor\joomla\registry\src\Registry.php Zeile 359
    in Verdacht bzw. etwas was diese Methode darin falsch aufruft

    Code
    public function loadString($data, $format = 'JSON', $options = array())


    $registry->loadString(...);
    Kommt jetzt drauf an wie experimentierfreudig du bist. Könnte ich dir einen Code zusammenbasteln, den man in beide Dateien vorübergehend einsetzt und der in eine Datei mitprotokolliert, wenn ein Aufruf mit Array statt String erfolgt und "von wem".


    Da das sowohl aus Backend als auch Frontend sein könnte, muss man halt rumklicken und hoffen, dass man entsprechende Seite öffnet, wo das passiert.


    Ich hab die bei mir mal drin, obs evtl. doch irgendwo der Joomla-Core ist.


    Lohnt sich das? 1. Es ist eine Warning, also kein dramatischer Fehler. 2. Sieht man Beeinträchtigungen? 3. Befindet sich der Fehler häufiger in deiner Log-Datei?


    Oder, kannst jetzt natürlich auch noch mal Suche mit
    loadString(
    machen.


    Das werden aber eine große Menge Ergebnisse.

  • Klingt kompliziert, aber wenn es nichts wichtiges ist, was die Sicherheit betrifft, dann soll es mir egal sein.


    Beeinträchtigungen konnte ich bisher nicht feststellen.
    Der Fehler tritt mehrmals in der log file auf.