phpBB 3.3.9: Fatal error ... Looks like you try to load a template outside ... (INCLUDEJS / INCLUDECSS)

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2109
Registriert: 15.12.2014 10:19
Kontaktdaten:

phpBB 3.3.9: Fatal error ... Looks like you try to load a template outside ... (INCLUDEJS / INCLUDECSS)

Beitrag von LukeWCS »

Basiert auf einem Beitrag von Marc auf phpBB.com: [Info] Changes to twig behavior on loading files in 3.3.9

Problem und Lösung

Bei phpBB 3.3.9 wurde u.a. auch Twig von Version 2.15.1 auf 2.15.3 aktualisiert und bei Twig gab es eine kleine Änderung die bei manchen (meist älteren) Erweiterungen eine Fehlermeldung ähnlich wie die folgende verursachen kann:

Code: Alles auswählen

Fatal error: Uncaught Twig\Error\LoaderError: Looks like you try to load a template outside configured directories (../theme/some_file.css) in "@some_extension/some_other_file.html"
Das hängt mit strengeren Regeln bei der Handhabung von Dateinamen/Pfaden der Dateien zusammen, die mit Twig geladen werden dürfen. Der Fehler tritt nun auf, wenn bei INCLUDEJS und INCLUDECSS relative Pfadangaben verwendet wurden.

Beispiele bezüglich ungültiger Pfadangaben:

Twig:

Code: Alles auswählen

{% INCLUDECSS '../theme/foobar.css' %}
Alte phpBB Template Syntax:

Code: Alles auswählen

<!-- INCLUDECSS ../theme/foobar.css -->
Das Problem kann einfach behoben werden, indem bei INCLUDEJS und INCLUDECSS anstelle von relativen Pfadangaben das Erweiterungs-Präfix @autorname_extname verwendet wird.

Beispiele bezüglich Lösung:

Twig:

Code: Alles auswählen

{% INCLUDECSS '@autorname_extname/foobar.css' %}
Alte phpBB Template Syntax:

Code: Alles auswählen

<!-- INCLUDECSS @autorname_extname/foobar.css -->
Die nachfolgenden Informationen dienen nur der Beleuchtung der Ursache und sind für die Problemlösung nicht relevant.

Hintergrund

Die betreffende Fehlermeldung existiert prinzipiell schon lange, präzise seit phpBB 3.1.0 (Twig 1.13.2). Die zugehörige Prüfung hat sich jedoch im Laufe der Jahre mehrfach geändert und blieb bei phpBB 3.3 lange Zeit unverändert bis einschliesslich phpBB 3.3.8 (Twig 2.15.1). Bei phpBB 3.3.9 (Twig 2.15.3) gab es jedoch eine winzige Änderung in folgender Datei, die in Kombination mit relativen Pfadangaben dann zur besagten Fehlermeldung führt:

vendor\twig\twig\src\Loader\FilesystemLoader.php (Zeilen 209-211)

Twig 2.15.1:

Code: Alles auswählen

            list($namespace, $shortname) = $this->parseName($name);

            $this->validateName($shortname);
Twig 2.15.3:

Code: Alles auswählen

            $this->validateName($name);

            list($namespace, $shortname) = $this->parseName($name);
Es handelt sich also um eine unbemerkte Änderung bei Twig, nicht um eine gewollte Änderung bei phpBB 3.3.9.
Zuletzt geändert von LukeWCS am 11.01.2023 22:26, insgesamt 3-mal geändert.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Antworten

Zurück zu „Extension Bastelstube“