Contao-Camp 2024
Ergebnis 1 bis 10 von 10

Thema: Anhänge lassen sich nach Migration nicht mehr herunterladen

  1. #1
    Contao-Nutzer Avatar von LutzWinkler
    Registriert seit
    02.09.2009.
    Beiträge
    139

    Standard Anhänge lassen sich nach Migration nicht mehr herunterladen

    Hi Community,

    in den letzten Monaten haben wir nach einigen Umwegen unsere Contao-Installation von 2.11.17 auf 3.4.5 migriert. Auf beiden Versionen läuft Helpdesk in Version 1.3.0 stable.
    Die alten Nachrichten wurden erfolgreich übertragen, neue Nachrichten lassen sich posten.
    Das Problem sind jetzt die Anhänge der Forumsnachrichten. Die sind alle fein säuberlich in mehreren Unterordnern in tl_files/foren einsortiert. Nur leider lassen sie sich nicht mehr herunterladen. Contao meldet z.B. von der Adresse
    http://.../system/modules/helpdesk/H...?msg=3178&id=1
    File not found (/.../cms/3_2//3178.1).
    Wenn ich nun z.B. die Datei 3178.1 aus dem Verzeichnis tl_files/foren/allgemein ins Rootverzeichnis verschiebe, wird sie problemlos heruntergeladen. Obwohl in der Tabelle tl_helpdesk_categories für alle Foren, in denen Anhänge zugelassen sind, im Feld atch_dir der korrekte Pfad steht, werden die Dateien offenbar dennoch im Rootverzeichnis gesucht.
    Nun gibt es im Backend ja unter den Forumseinstellungen die Option "Anhänge aktivieren". Wenn die aktiviert sind, erscheint ein Button "Auswahl ändern", um das Verzeichnis für die Anhänge zu selektieren. Soweit so gut. Nur leider wird die Auswahl nicht gespeichert! Wenn das man kein Bug ist?
    Nun könnte man das Problem lösen, indem man alle Dateien aus den Unterordnern von tl_files/foren ins Rootverzeichnis verschiebt. Dann funktioniert der Download wieder. Die schöne Ordnung ist danach allerdings perdu.

    Hat jemand eine Idee, wie ich das lösen könnte?

    Viele Grüße,
    Lutz

  2. #2
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hallo Lutz,

    wurde bei dem Update die Einstellung beibehalten, dass der Ordner 'tl_files' verwendet wird? Bei einer Neuinstallation heißt der Ordner 'files'.

    Außerdem ist in Contao 3.x auf ein DB-basiertes Filesystem umgestellt worden. Das könnte auch zu deinem Problem führen. Ich habe HelpDesk nicht im Einsatz und weiß nicht, ob die Version bereits dafür vorbereitet ist.

    a) im Backend unter 'Dateiverwaltung' einmal 'synchronisieren'.
    b) evtl. müssen in den Templates Anpassungen vorgenommen werden, falls du die Templates aus der 2.x-Version übernommen hast.

    Gruß,
    folkfreund

    EDIT: Lt. Erweiterungsliste ist HelpDesk 1.3.10 nicht für Contao 3.x verfügbar. Daran wird es wohl liegen...
    Den Thread zu Helpdesk mit Contao 3 kennst du sicher.
    Geändert von folkfreund (07.12.2015 um 18:41 Uhr)

  3. #3
    Contao-Nutzer Avatar von LutzWinkler
    Registriert seit
    02.09.2009.
    Beiträge
    139

    Standard

    Hallo folkfreund,

    danke für die prompte Antwort!

    Nun ist es ja nicht so, dass Helpdesk gar nicht funktioniert: Wenn ich ein neues Thema mit Anhang erstelle, wird dieser Anhang im Format xxxx.y im Rootverzeichnis gespeichert und kann auch beim Anklicken des Dateilinks in der Nachricht wieder heruntergeladen werden - obwohl sie im 'falschen' Verzeichnis liegen und nicht in der Tabelle tl_files vorhanden sind. Ein Workaround wäre also, alle alten Anhänge aus den Unterordnern von tl_files/foren ins Rootverzeichnis zu kopieren.

    Das merkwürdige ist, dass obwohl die alten Einträge korrekt in die neue Tabelle tl_files übernommen worden sind und auch im Dateissystem am richtigen Ort liegen, sie trotzdem nicht heruntergeladen werden. Sieht korrekt aus - funktioniert aber nicht!
    Da wir über 3000 Forumsnachrichten mit hunderten Anhängen haben, will ich Helpdesk nicht einfach einstampfen. Es hat ja bisher prima funktioniert.

    Viele Grüße,
    Lutz

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Klar, ich hatte schon verstanden, dass die Grundfunktionen noch funktionieren. Und das freut mich auch für dich :-)

    Es bleibt aber unklar, was alles nicht funktioniert.

    Du hast noch nicht beschrieben, wie du das Update durchgeführt hast (update über mehrer Versionen oder das ganze System neu aufgesetzt). Die gespeicherten Anhänge bleiben natürlich im Dateisystem erhalten, wenn du sie nicht ausdrücklich löschst. Ob aber dein neues Contao mit dem Ordner /files oder /tl_files arbeitet ist ebenfalls noch nicht beantwortet.
    Möglicherweise landen neue Anhänge im root, da der Zielordner nicht bekannt oder nicht beschreibbar ist. Wie sehen die Rechte von /tl_files aus?

    Ich meine, man kann im Contao 3 gezielt Ordner von der Datenbank-Indizierung ausschließen, kann dir aber nicht sagen wie das geht (meine mich nur zu erinnern, das mal gelesen zu haben). Vielleicht ergibt sich darüber eine Möglichkeit, Anhänge weiter mit der alten Helpdesk-Version zu verwalten. Vermutlich wirst du aber an irgendwelchen Templates Anpassungen vornehmen müssen.

    Gruß,
    folkfreund

  5. #5
    Contao-Nutzer Avatar von LutzWinkler
    Registriert seit
    02.09.2009.
    Beiträge
    139

    Standard

    Hab jetzt eine Lösung gefunden:
    In system/modules/helpdesk gibt es 5 Dateien, die die neue Klasse FilesModel nutzen:
    HelpdeskDownload.php
    HelpDeskCategory.php
    HelpdeskImport.php
    HelpdeskNotify.php
    HelpdeskAvatar.php

    Als erstes habe ich in den beiden ersten Dateien die Codezeilen gesucht, in denen auf FilesModel verwiesen wird.
    Z.B. in HelpDeskDownload.php:
    PHP-Code:
    $path TL_ROOT.'/'.\FilesModel::findByPk($q->cat_atch_dir)->path.'/'
    diese Zeile habe ich ersetzt durch
    PHP-Code:
    $path TL_ROOT.'/'.$q->cat_atch_dir.'/'
    ...und siehe da: die angehängten Dateien werden wieder gefunden!

    Analog habe ich die Datei HelpDeskCategory.php gepatcht:
    aus
    PHP-Code:
    $this->atch_dir = \FilesModel::findByPk($q->cat_atch_dir)->path
    wurde
    PHP-Code:
    $this->atch_size     $q->cat_atch_size
    ...nun werden die Anhänge von neuen Nachrichten ebenfalls in die richtigen Ordner gepackt.

    Keine Ahnung, ob das nach dem nächsten Update noch funktioniert. Jetzt kann ich erst mal mit den Foren weiterarbeiten.

    Vielen Dank für die Unterstützung,
    Lutz

  6. #6
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Zunächst mal Glückwunsch, dass es für dich nun funktioniert!

    Was mich stutzig macht:
    • Die Verwendung von \FilesModel::findByPk() deutet auf eine aktuellere Version für Contao 3.x hin. Hast du vielleicht doch irgendwie ein Update installiert (z.B. von GitHub)?
    • Dann wiederum sollte es auch funktionieren, sofern der Ordner /tl_files von der DB erfasst wird (danach hatte ich mehrfach gefragt). Falls du ansonsten nun den Ordner /files nutzt, dann könnte es auch funktionieren, die Anhänge dahin zu verschieben und die Dateiverwaltung zu synchronisieren.

  7. #7
    Contao-Nutzer Avatar von LutzWinkler
    Registriert seit
    02.09.2009.
    Beiträge
    139

    Standard

    Hmmm... An der Migration waren mehrere Leute beteiligt. Deshalb weiß ich auch nicht, welches Repository verwandt wurde. Ich versuche jetzt, etwas Licht ins Chaos zu bringen.

    Die neue Site läuft unter Contao 3.4.5. Wenn ich im Backend in der Dateiverwaltung auf 'Synchronisieren' klicke, passiert erst mal eine Weile nichts und dann kommt ein 500er Server-Error. Dennoch scheint es zu einer Synchronisation der Dateien im Ordner tl_files mit der DB-Tabelle tl_files gekommen zu sein. Jedenfalls finden sich in der Datenbank auch die neu hinzugefügten Anhänge. Merkwürdigerweise allerdings auch Dateien, die nicht mehr im Dateisystem vorhanden sind.
    Beispiel:
    screenshot.PNG
    Die Datei 3176.1 ist im Dateisystem nur 1x im Ordner tl_files/helpdesk vorhanden, erscheint in der DB-Tabelle aber an 2 unterschiedlichen Orten.

    Wenn ich im Modul HelpdeskDownload.php die Zeile
    PHP-Code:
    $path TL_ROOT.'/'.\FilesModel::findByPk($q->cat_atch_dir)->path.'/'
    reaktiviere, bekomme ich wieder wie gehabt die Fehlermeldung
    File not found (/kunden/465037_30627/webseiten/cms/3_2//3176.1).
    Der Workaround (die alte Routine?) findet die Datei:
    PHP-Code:
    $parts explode('/',str_replace('\\''/'$q->cat_atch_dir));
    $path TL_ROOT.'/';
    foreach (
    $parts as $part) if (strlen($part)) $path .= $part.'/'
    Das ist es was ich nicht verstehe: Da ja offenbar die aktuelle Version meines Contao das Datenbank-Filesystem unterstützt, müsste wie du sagst, FilesModel::findByPk die Datei finden, zumal sie ja korrekt in der Datenbank abgelegt ist. Tut sie aber nicht. Im übrigen gibt es auch noch einen Ordner /files im Rootverzeichnis Server. Der scheint aber im Gegensatz zu dem von mir verwandten Ordner /tl_files nicht mit der DB synchronisiert zu werden.

    Viele Grüße,
    Lutz

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Zitat Zitat von LutzWinkler Beitrag anzeigen
    Als erstes habe ich in den beiden ersten Dateien die Codezeilen gesucht, in denen auf FilesModel verwiesen wird.
    Z.B. in HelpDeskDownload.php:
    PHP-Code:
    $path TL_ROOT.'/'.\FilesModel::findByPk($q->cat_atch_dir)->path.'/'
    diese Zeile habe ich ersetzt durch
    PHP-Code:
    $path TL_ROOT.'/'.$q->cat_atch_dir.'/'
    ...und siehe da: die angehängten Dateien werden wieder gefunden!
    Das deutet daraufhin, dass bei der Migration die Dateiverweise nicht auf IDs bzw. UUIDs aktualisiert wurden. Wenn du deine Änderung drinnen lässt könnte es sein, dass neue Anhänge nicht funktionieren werden.

  9. #9
    Contao-Nutzer Avatar von LutzWinkler
    Registriert seit
    02.09.2009.
    Beiträge
    139

    Standard

    Wenn ich die Datenbankauszüge aus der Tabelle tl_files richtig interpretiere, sind die IDs und UUIDs schon aktualisiert worden (s. Screenshot in meinem Posting von gestern). Deshalb verstehe ich auch nicht, warum FilesModel::findByPk nicht funktioniert.
    Du hast schon recht: auch neue Anhänge haben erst wieder funktioniert, nachdem ich die Moduldatei HelpDeskCategory.php gepatcht habe.

    Ich kann mit den Patches im Moment schon leben. Ich wüsste nur gerne, warum das neue Datenbankfilesystem mit Helpdesk nicht funktioniert. Denn ich fürchte, dass spätestens beim nächsten Update auch noch andere Module Probleme machen könnten. Wir haben die ganze Migration ja gemacht, um endlich wieder ein aktuelles System zu haben. Wenn jetzt zentrale Module nur mit Workarounds funktionieren, ist das natürlich blöd.

    Viele Grüße,
    Lutz

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    So habe ich das nicht gemeint. Dass in tl_files die UUIDs drinstehen ist ja gut und schön, aber es geht um die Referenzen in den helpdesk Tabellen. Wenn dieser Code funktioniert
    PHP-Code:
    $path TL_ROOT.'/'.$q->cat_atch_dir.'/'
    und es aber eigentlich dieser Code sein sollte
    PHP-Code:
    $path TL_ROOT.'/'.\FilesModel::findByPk($q->cat_atch_dir)->path.'/'
    dann steht in $q->cat_atch_dir, wo auch immer das herkommt, vermutlich aus einer helpdesk Tabelle, immer noch der Dateipfad drin, statt die UUID. Und die Code Änderung wird keine finale Lösung sein, denn vermutlich werden zukünftige Einträge dann nicht mehr funktionieren - weil dann wahrscheinlich UUIDs in die Tabelle gespeichert werden und nicht der Dateipfad.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •