Seite 1 von 1

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

Verfasst: 30.11.2022 18:09
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.