Update 5.2 - 5.3: Theme kann nicht mehr angezeigt werden: directory not allowed by security setting

Hallo,

nachdem ich das Update von 5.2.22 auf 5.3.1 durchgeführt habe, erhalte ich beim Aufruf von Seiten mit Artikeln oder Kategorie-Startseiten folgende Fehlermeldung :

Fatal error: Uncaught exception 'SmartyException' with message 'directory '/home/almute/www/test_shop/themes/Frontend/Yachting' not allowed by security setting' in /home/almute/www/test_shop/engine/Library/Smarty/sysplugins/smarty_security.php:381
Stack trace:
#0 /home/almute/www/test_shop/engine/Library/Smarty/sysplugins/smarty_internal_resource_file.php(33): Smarty_Security->isTrustedResourceDir('/home/almute/ww...')
#1 /home/almute/www/test_shop/engine/Library/Smarty/sysplugins/smarty_resource.php(532): Smarty_Internal_Resource_File->populate(Object(Smarty_Template_Source), NULL)
#2 /home/almute/www/test_shop/engine/Library/Smarty/sysplugins/smarty_internal_resource_extends.php(41): Smarty_Resource::source(NULL, Object(Enlight_Template_Manager), '')
#3 /home/almute/www/test_shop/engine/Library/Enlight/Components/Snippet/Resource.php(76): Smarty_Internal_Resource_Extends->populate(Object(Smarty_Template_Source), NULL)
#4 /home/almute/www/test_shop/engine/Library/Smarty/sysplugins/smarty_resource.php(532): Enlight_Compon in /home/almute/www/test_shop/engine/Library/Smarty/sysplugins/smarty_security.php on line 381 

Die Seiten enthalten keinen Code, “head” und “body” sind komplett leer.

Die Start-Seite des Shops zeigt die Elemente oben und unten, aber keinen eigentlichen Inhalt, Standardseiten wie AGB sind in Ordnung.

Was ist falsch? Wo bzw. wie kann ich die security settings ändern, damit auf mein Template zugegriffen werden kann?

Danke für eure Hilfe, Almute

Hallo,

siehe: http://community.shopware.com/Update-Guide-Shopware-5.2-auf-Shopware-5.3_detail_2011.html und vor allem: Shopware 5 upgrade guide .

Beste Grüße

Sebastian

Hallo Sebastian,

Danke für Deine Antwort.
Ich hatte während der Installation keine unzulässigen Plugins im System und verwende auch keines, das nicht von Shopware ist. Alle Voraussetzungen waren erfüllt.

An der Erweiterung in der config.php für den Smarty security mode habe ich mich schon versucht, bisher aber noch keinen Erfolg. Ich vermute, dass ich für “dirname” einen Verzeichnisnamen einsetzen muss - nur welchen? 

Dann gibt es dort den Hinweis “Load templates from non-registered directories”, den ich auch schon an anderer Stelle gefunden habe. Hier fehlt mir leider die Info, in welcher Datei diese Änderung vorgenommen werden muss.

Die Meldung wird i.d.R. durch ein Plugin verursacht. Hast du die denn mal nach und nach deaktiviert und geschaut, welche es ist?
 

Ich habe jetzt alle Plugins deinstalliert, aber das Problem besteht weiterhin.

Einzig gibt es ein Plugin “InputFile”, das sich zwar deaktivieren aber nicht deinstallieren lässt.

Hallo,

benutzt du ein eigenes Theme? Schalte mal testweise auf das Standard Responsive Theme, um diesen Fall auszuschließen.

Viele Grüße aus Schöppingen

cool Michael Telgmann

Bei Verwendung des Standard Responsive Theme anstelle meines Themes funktionieren schon mal ein paar Seiten mehr - aber nicht alle.
Das ist meines Erachtens aber auch klar, denn die Meldung lautet ja _‘directory ‘/home/almute/www/test_shop/themes/Frontend/Yachting’ not allowed by security setting’ _Frontend/Yachting ist genau der Ordner, in dem meine individuellen Template-Dateien liegen.

Ich habe genau das gleiche Problem und weiss jetzt auch gar nicht was ich machen soll. Leider hat die Berechtigung eines Benutzers mal gar nicht gegriffen und trotz der “Nicht-Berechtigung” fuer Updates wurde unser Shop geupdatet.

Unser eigenes Theme wurde aber nicht als Plugin entwickelt. Bedeutet das, dass ich es als Plugin schreiben muss um auf die Controller Actions zuzugreifen? Und weiter:

Ich habe noch gelesen, das alle Plugins, die nicht vond er Shopware Seite kommen automatisch deaktiviert werden udn als nicht sicher kekennzeichnet werden. Ist das wahr?

Wenn ja bedeutet das doch, dass custom Themes und Plugins gar nicht mehr moeglich sind?!?

Automatisch wird nichts deaktiviert, es wird lediglich bei einem Update hingewiesen, dass der Store die Plugins nicht kennt. Es gibt einen Sicherheitsmodus im Plugin-Manager, den man zum testen eines Fehlers aktivieren kann, der dann alle Plugins in Quarantäne steckt. Das hat aber nichts mit der generellen Funktion zu tun.
Die Frage passt auch aktuell so garnicht zu dem Problem in diesem Thread.

@almute schrieb:

Bei Verwendung des Standard Responsive Theme anstelle meines Themes funktionieren schon mal ein paar Seiten mehr - aber nicht alle.
Das ist meines Erachtens aber auch klar, denn die Meldung lautet ja _‚directory ‚/home/almute/www/test_shop/themes/Frontend/Yachting‘ not allowed by security setting‘ _Frontend/Yachting ist genau der Ordner, in dem meine individuellen Template-Dateien liegen.

Um dazu die Frage nocheinmal zu stellen, die immer noch nicht beantwortet wurde:

Was muss getan werden um dieses Problem zu loesen. Hier wurde leider nur ein Link zum Updateguide fuer Plugins gepostet und keine Antwort auf das eigentliche Problem gegeben.

Meine Frage ist (um es etwas klarer auszudruecken): Muss das Theme als Plugin bereitgestellt/entwickelt werden und die noetigen Template Directories dann in diese Plugin bootstrap.php hinzugefuegt werden, oder wie behebt man nun das Problem, dass ein Custom Theme nicht mehr geladen werden kann, da sonst der im Thread angegebene Fehler ausgworfen wird? 

Man braucht kein Plugin für Custom Theme. Ihr müsst individuell überprüfen, welche Template-Anpassung in eurem Custom-Theme das Problem verursacht. Die Custom Themes können weiter so wie zuvor genutzt werden, nur irgendeine der Änderungen die dort umgesetzt sind, sind halt nicht mehr kompatibel. Ergo: Schrittweise die Anpassungen zurückbauen bis man den Übeltäter findet.

Was mich wundert, ist diese merkwürdige Meldung _not allowed by security setting. _Beim ersten Versuch, Seiten im Frontend aufzurufen, kamen konkrete Meldungen, was in bestimmten tpl-Dateien meines Custom-Themes nicht in Ordnung ist. Es konnte also sehr wohl auf mein Custom-Theme zugegriffen werden.

Diese Fehler habe ich Schritt für Schritt korrigiert, bis dann die obige Meldung kam. Diese ist nun so schwammig, dass ich nicht weiß, wo ich jetzt noch nach einem Fehler suchen soll.

Google mal not allowed by security setting das scheint eine PHP-Meldung zu sein und dementsprechend im Betriebssystem zu regeln zu sein.

Hallo, 

mir ist der Fehler schon mal unter gekommen, als in einer Template Datei ein Tippfehler vorhanden war. Statt {extends file=„parent:frontend/detail/index.tpl“} stand dort {extends file=„parent:frontent/detail/index.tpl“}
Beachtet das falsch geschriebene „frontend“. Die Fehlermeldung ist natürlich alles andere als hilfreich. Ich habe dazu auch bereits ein Ticket angelegt: Shopware Issuetracker

Viele Grüße aus Schöppingen

cool Michael Telgmann

2 „Gefällt mir“

Unter dem oben zum Thema Security Setting angegebenen Link lese ich:

 

Smarty security mode

We have activated the Smarty security mode globally with 5.3:
https://github.com/shopware/shopware/blob/5.3/engine/Shopware/Components/DependencyInjection/Bridge/Template.php#L57

This means that certain PHP functions can no longer be used in Smarty. The available Smarty functions are stored in the following configuration file:https://github.com/shopware/shopware/blob/5.3/engine/Shopware/Configs/smarty_functions.php

This can be extended via the config.php as follows:

[
//…
],
‚template_security‘ => [
‚php_modifiers‘ => [‚dirname‘],
‚php_functions‘ => [‚dirname‘, ‚shell_exec‘],
]
];

 

Leider wurde meine diesbezügliche Frage, was ich für dirname einsetzen muss, noch nicht beantwortet. Welcher Pfad ist gemeint?

den Dirnamen musst Du ja wissen, wenn Du weitere / andere / Deine Smarty-Funktionen verwendest

Achtung! “dirname” ist der Name einer PHP Funktion, die durch unsere Whitelist normalerweise nicht mehr verwendet werden kann. Das hat nichts mit Verzeichnispfaden von irgendwas zu tun  Wink Ist hier also nur beispielhaft aufgeführt

Viele Grüße aus Schöppingen

cool Michael Telgmann

Also, kann ich hier nichts eintragen, um das Problem zu lösen?

Du kannst dort nur PHP Funktionen eintragen. Solltest du verbotene PHP Funktionen in deinen Templates nutzen, hättest du eine andere Fehlermeldung bekommen. Daher wird es dir vermutlich nichts nutzen, dort einen Eintrag zu machen. 
Ich würde noch mal deine Templates genau untersuchen. Vielleicht hattest du ja auch wie in meinem Fall einfach nur einen Tippfehler im Template  Smile

Viele Grüße aus Schöppingen

cool Michael Telgmann

Ja, ich werde mal alle Template-Dateien durchgehen.

Nur frage ich mich, weshalb ein Tippfehler, der schon seit Monaten bis Jahren im Template ist, sich nach einem Update so fatal auswirken kann. Den Fehler mit falsch geschriebenem frontend habe ich auf jeden Fall nicht in meinen Dateien. Es muss dann wohl ein anderer sein.