PHP 8: Uploadfehler beim Frontend Upload

  • Hatte im anderen Thread schon geschrieben,


    hier wie empfohlen mein Problem in einem neuen Thema:


    Ich habe (natürlich auf einer Entwicklungsseite) erstmal auf Joomgallery 3.6.0 geupdated ohne Probleme, dann auf PHP 8.0 gestellt. Die Gallery kann ich ansehen im Frontend und Backend das funktioniert soweit nur der Upload im Frontend nicht

    Da erhalte ich folgenden Fehler auf der Seite für den Menüpunkt zum Bilder hochladen (JoomGallery » Upload-Formular: Standard-Layout) aber auch zum Kategorien erstellen:

    --------------

    The page you are looking for can't be found

    Error 500 - JHtmlJoomselect::categorylist not found.

    --------------------


    Debug Modus ist an / Fehler auf maximum


    Habe es auch hier mit den folgenden Punkte probiert mit dem gleichen Resultat:

    - in der Joomla Konfiguration das "URL-Rewrite nutzen" ausschalten

    - Eine vorhandene .htaccess deaktiveren indem du sie umbenennst

    - Joomla-Cache und sonstige Caches ausschalten

    - Das Joomla Standard-Template protostar aktivieren


    Das habe ich aber auch gefunden: Auf PHP 7.4 und der Joomgallery Version 3.6.0 bekomme ich folgende Fehlermeldung, der Upload geht aber:


    -----------------

    Deprecated: call_user_func_array() expects parameter 1 to be a valid callback, non-static method JHTMLJoomSelect::categoryList() should not be called statically in /usr/www/users/domainname/1dev/libraries/src/HTML/HTMLHelper.php on line 239

    -----------------


    Danke schonmal für Eure Hilfe

  • Elfangor93

    Hat das Thema freigeschaltet.
    • Offizieller Beitrag

    Danke für den Screenshot. Sieht soweit alles gut aus.

    Jetzt habe ich noch folgende Vorschläge:

    1. Den Menüpunkt der zum Uploadformular führt löschen und dann neu anlegen

    2. Die JoomGallery 3.6.0 aus unseren Downloads neu herunterladen und über Erweiterungen >> Verwalten >> Installieren hochladen

    3. Die Joomla-Core-Dateien neu installieren lassen. Das geht über Komponenten >> Joomla-Update >> Button "Auf Updates prüfen" >> Button "Neuinstallation der Joomla-Core-Dateien"

    Ich gehe davon aus du bist als Super-User eingeloggt, wenn du das Upload-Formular aufrufst?

  • Das hat leider alles nicht funktioniert.


    Ich vermute der Fehler liegt noch tiefer und früher. Da der Upload zwar unter PHP 7.4 funktioniert aber ich diese Fehlermeldung im Uploadformular erhalte:


    Code
    Deprecated: call_user_func_array() expects parameter 1 to be a valid callback, non-static method JHTMLJoomSelect::categoryList() should not be called statically in /domain/libraries/src/HTML/HTMLHelper.php on line 239

    Ich nutze ja schon sehr lange die Joomgallery, vielleicht hängt da noch was ganz altes drin von Joomla Version 1.5 oder so ;)


    Ich habe nun auch nochmal die Konfiguration zurückgesetzt. Das ändert auch nichts.

    Danke für den Support.

    • Offizieller Beitrag

    JHtmlJoomSelect::categoryList wird in template files der JoomGallery verwendet, wo man in einer Dropdown-Liste Kategorien selektieren kann. So z.B in den administrations listen Ansichten von Bildern und Kategorien.


    Aufgerufen wird die Methode über JHTML nach diesem Prinzip:

    Code
    $html = JHTML::_('joomselect.categorylist', $currentcat, $cname, $extra, $exclude, '- ', $task, $action, $idtag);


    Du sagst, dass du den Fehler im upload formular im frontend bekommst?
    Die entsprechende Stelle in den template files generiert das Kategorien-Dropdown-Feld wie folgt:

    PHP
    <?php echo $this->single_form->getInput('catid'); ?>

    Dabei wird das Feld generisch als joomcategory-Feld generiert. Dies wird aber an vielen Stellen in der JoomGallery so gemacht, ich nehme deshalb an, dass das joomcategory-Feld den Fehler nicht generiert. Denn sonst müsste der Fehler an vielen Stellen erscheinen.


    Ich vermite, dass du noch template overrides besitzt, wo das Kategorie-Dropdown nicht mit getInput('catid') gerneriert wird, sondern irgendwie manuell.

    Bitte überprüfe mal deine template files und template overrides...

  • Habe alles geprüft. Der Fehler unter PHP 7.4 geht nicht weg.

    Im Debug Mode erhalte ich unter PHP 8 folgende Fehlermeldungen:



    Was ich noch gemacht habe: Ich habe die Kompetente einmal komplett Deinstalliert und neu installiert und es funktioniert ohne Fehler unter PHP 7.4 und PHP 8.0. Alle Daten und Bilder sind auf der Devel Seite weg.


    Ich denke es ist irgendwas an meiner Joomgallery was da hakt.


    Ich setzte nun eine neue Testseite auf und probiere nochmal. Vielleicht sollte ich einmal direkt die Joomgallery direkt rüberkopieren und nicht über Joomla installieren?

    • Offizieller Beitrag

    Ja, da scheint was faul zu sein. Der Call-Stack sieht in ordnung aus. Keine Overrides.

    Der Fehler liegt in einem der vier Files Zeile 9-12 in deinem Call-Stack. Du könntest noch probieren diese vier Files händisch durch neue, aus neuen Installationen stammende Files auszutauschen 🤷‍♂️

  • Noch nicht gelöst, ich probiere weiter. Immerhin lässt sich nun nach manuellen Austausch der Files im Frontend eine Kategorie erstellen. Fehlermeldung unter 7.4 ist auch weg. Aber der Upload geht unter 8.0 noch nicht.


    Ich melde mich wenn ich eine Lösung habe.

    • Offizieller Beitrag

    Noch nicht gelöst, ich probiere weiter. Immerhin lässt sich nun nach manuellen Austausch der Files im Frontend eine Kategorie erstellen. Fehlermeldung unter 7.4 ist auch weg. Aber der Upload geht unter 8.0 noch nicht.


    Ich melde mich wenn ich eine Lösung habe.

    Das verstehe ich nicht. :/


    Oben in #4 RE: PHP 8: Uploadfehler beim Frontend Upload

    ist doch schon erklärt wie du die Aktualisierung der Dateien vornehmen kannst.

    Wenn sich die Dateien nicht aktualisieren lassen, sind sie wohl "Schreibgeschützt". In dem Fall musst du die Rechte richtig setzen: Alle Verzeichnisse auf "755". Alle Dateien auf "644".

    Danach:

    2. Die JoomGallery 3.6.0 aus unseren Downloads neu herunterladen und über Erweiterungen >> Verwalten >> Installieren hochladen

    3. Die Joomla-Core-Dateien neu installieren lassen. Das geht über Komponenten >> Joomla-Update >> Button "Auf Updates prüfen" >> Button "Neuinstallation der Joomla-Core-Dateien"

  • So ich melde mich noch einmal bei diesem Thema zurück, nachdem ich das erst einmal ruhen gelassen habe.


    Ich konnte es jetzt lösen mittels Datei und Ordnervergleich. Es lag daran, dass das Update zwar gut durchgelaufen ist, aber es Dateien in /components/com_joomgallery/helpers/ gab, die es in der neueren Version nicht mehr gab. Die Dateien (index.html, joomgallery.php, joomselect.php) lagen im Unterordner html und stammten wahrscheinlich aus einer ganz frühen Installation. Datum der Dateien war 2012. Ich haben den Ordner /components/com_joomgallery/helpers/html gelöscht.


    Schließe ich meine andere Frage an. Ich habe weitere Dateien gefunden die nicht mehr in 3.6.2 dabei sind, die können dann auch ohne Probleme gelöscht werden?


    components\com_joomgallery\views


    tmpl/default.xml

    mini/view.html.php

    mini/tmpl/default.xml

    search/tmpl/default.xml