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"
INCLUDEJS
und INCLUDECSS
relative Pfadangaben verwendet wurden.Beispiele bezüglich ungültiger Pfadangaben:
Twig:
Code: Alles auswählen
{% INCLUDECSS '../theme/foobar.css' %}
Code: Alles auswählen
<!-- INCLUDECSS ../theme/foobar.css -->
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' %}
Code: Alles auswählen
<!-- INCLUDECSS @autorname_extname/foobar.css -->
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);
Code: Alles auswählen
$this->validateName($name);
list($namespace, $shortname) = $this->parseName($name);