Nach Update Newsletter bringt Fehlermeldung

Hallo ich habe heute ein Update gemacht. Soweit alles gut, nur der Newsletter Manager bringt folgende Fehlermeldung:

 

Ups! Ein Fehler ist aufgetreten!

Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

Syntax Error in template “/var/www/vhosts/…de/httpdocs/themes/Frontend/Mobil/newsletter/index/footer.tpl” on line 46 “<a href=”{$sStart|dirname}/backend/newsletter?campaign={$sCampaign.id}&mailaddress={$sUser.mailaddressID}&hash={$sCampaignHash}" target="_blank" style=“color:#000 !important;”>" modifier ‘dirname’ not allowed by security setting in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Stack trace:

 #0 engine/Library/Smarty/sysplugins/smarty\_security.php(227): Smarty\_Internal\_TemplateCompilerBase-\>trigger\_template\_error('modifier 'dirna...') #1 engine/Library/Smarty/sysplugins/smarty\_internal\_compile\_private\_modifier.php(98): Smarty\_Security-\>isTrustedPhpModifier('dirname', Object(Smarty\_Internal\_SmartyTemplateCompiler)) #2 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(475): Smarty\_Internal\_Compile\_Private\_Modifier-\>compile(Array, Object(Smarty\_Internal\_SmartyTemplateCompiler), Array, NULL, NULL) #3 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(249): Smarty\_Internal\_TemplateCompilerBase-\>callTagCompiler('private\_modifie...', Array, Array) #4 engine/Library/Smarty/sysplugins/smarty\_internal\_compile\_private\_print\_expression.php(65): Smarty\_Internal\_TemplateCompilerBase-\>compileTag('private\_modifie...', Array, Array) #5 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(475): Smarty\_Internal\_Compile\_Private\_Print\_Expression-\>compile(Array, Object(Smarty\_Internal\_SmartyTemplateCompiler), Array, NULL, NULL) #6 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(249): Smarty\_Internal\_TemplateCompilerBase-\>callTagCompiler('private\_print\_e...', Array, Array) #7 engine/Library/Smarty/sysplugins/smarty\_internal\_templateparser.php(2358): Smarty\_Internal\_TemplateCompilerBase-\>compileTag('private\_print\_e...', Array, Array) #8 engine/Library/Smarty/sysplugins/smarty\_internal\_templateparser.php(3101): Smarty\_Internal\_Templateparser-\>yy\_r28() #9 engine/Library/Smarty/sysplugins/smarty\_internal\_templateparser.php(3201): Smarty\_Internal\_Templateparser-\>yy\_reduce(28) #10 engine/Library/Smarty/sysplugins/smarty\_internal\_smartytemplatecompiler.php(105): Smarty\_Internal\_Templateparser-\>doParse(10, '/backend/newsle...') #11 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(192): Smarty\_Internal\_SmartyTemplateCompiler-\>doCompile('

 

Leider funktioniert das alles nicht! Hat jemand einen Tip für mich?

 

LG.

Melanie

Ach ja meine footer.tpl sieht so aus:

  |
   
    
{s name=‘NewsletterFooterNavigation’}{/s}

    

        {if $sUserGroupData.tax}
            {s name=‘NewsletterFooterInfoIncludeVat’}{/s}
        {else}
            {s name=‘NewsletterFooterInfoExcludeVat’}{/s}
        {/if}
    

        |

    
|
         
 

|
    

    

|
    
        {s name=‘NewsletterFooterCopyright’}{/s}
     |
    

 

  |
    ⇒  |
   
    [
        {s name=‘NewsletterFooterLinkUnsubscribe’}{/s}]({url module=‘frontend’ controller=‘newsletter’})
    |
 

  |
     ⇒  |
    
-   
+   

         {s name=‘NewsletterFooterLinkNewWindow’}{/s}

    
     |
 

 

 

 

Hier wurde das auch behandelt: https://forum.shopware.com/discussion/48021/5-30-backend-tot-modifier-dirname-not-allowed-by-security-setting 

Sorry, leider verstehe ich nicht was du meinst! Dort wird doch was ganz anderes behandelt?

@karlharris schrieb:

Hier wurde das auch behandelt: https://forum.shopware.com/discussion/48021/5-30-backend-tot-modifier-dirname-not-allowed-by-security-setting 

Nochmal genau lesen. 

Ich hab gelesen, leider verstehe ich es nicht. Soll ich die Datei config.php um das erweitern?

 

<?php return ['db' => [ //....], 'template\_security' =\> ['php\_modifiers' =\> ['dirname'], 'php\_functions' =\> ['dirname', 'shell\_exec'], ] ];   In meiner Datei config.php steht folgendes:   <?php return array (
  'db' =\>   array (     'username' =\> '.....',     'password' =\> '...',     'host' =\> 'localhost',     'port' =\> '3306',     'dbname' =\> '......',   ), );     an welcher Stelle muss ich das einsetzen?   Sorry für mein unwissen ![Foot-in-Mouth](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/foot-in-mouth.png "Foot-in-Mouth")  

Generell ab Shopware 5.3 (steht in der Anleitung zum Update)

Ab 5.3.0 wurde der Smarty Security Mode standardmäßig aktiviert. Dies kann zu Inkompatibilitäten mit Plugins führen. Daher sollte die Kompatibilität der Plugins mit dem Smarty Security Mode erneut geprüft werden.

{$sStart| dirname } => modifier ’ dirname’ not allowed by security setting

Soll heißen, dass “dirname” hat dort im TPL nichts mehr zu suchen. Du kannst Smarty Security aber in der Config auch deaktivieren. Siehe engine/Shopware/Configs/Default.php ganz unten.

 'template_security' => [
    'enabled' => false,
 ],

Aber besser wäre es, dass jeweilige TPL anpassen.

Ok Danke. Ich habe dirname in der Datei ( /html/themes/Frontend/Mobil/newsletter/index/footer.tpl) entfernt. Dann den Cache geleert, nach erneutem Test kommt die selbe Fehelrmeldung wieder. Bearbeite ich die falsche Datei? Ich muss doch die Datei die in meinem Theme ist verändern oder?

Offensichtlich benutzt du ein eigenes Template. Da muss man sich mit dem Thema befassen. Ansonsten das Template (also was du aktuell benutzt) mal neu kompilieren.

Evtl. sieht der Fehler auch nur ähnlich aus (Falls Cache gelöscht und Theme neu kompiliert korrekt) und es steht noch an anderer Stelle. Außerdem hat |dirname ja wohl mal eine Funktion besessen, d.h. das einfach nur rauszunehmen entfernt wohl die Fehlermeldung, die Funktionalität an dieser Stelle muss jedoch neu geprüft werden.

Ein Blick in das originale Shopware Template (Verzeichnis Bare) ab Version 5.3 zeigt die Unterschiede. Es zeigt auch, dass es dort “dirname” nicht mehr gibt. Ein Nachteil, wenn man eigene Templates baut und beim Shopware Update die Hinweise überliest :slight_smile:

Ja ich benutze ein eigenes Template dort habe ich auch die Datei footer.tpl geändert. Leider ohne Erfolg. Neu kompiliert habe ich es auch. Kann man feststellen auf welche Datei sich die Fehlermeldung bezieht? 

Bei mir steht im Orginal Bare Template aber auch noch “dirname”! Oh man was mach ich nur!?!? Crying

Setzen wir mal voraus, dass eigene Änderungen nicht am Bare gemacht wurden, dann würde ich mir einfach das Installationspaket (passend zur Version) von SW runterladen, auspacken und das Original-Bare aus dem Paket auf den Shop kopieren. Ggf. das Shop-Bare vorher sichern.

In akuellen 5.3 Version ist in dem Template kein “dirname” mehr enthalten. Wenn der Shop nicht 5.3.x ist, dürfte es diese Fehlermeldung aus meiner Sicht nicht geben. Wurde der Shop mal auf 5.3 geupdatet, dann wundert mich das warum im originalen Template das nicht drin steht. Die Aussagen passen nicht zusammen. Heißt also, in mühevoller Handarbeit das alles kontrollieren bis es passt :slight_smile:

So hab ich gemacht, gleiche Fehlermeldung! Wo mache ich einen Fehler, ich bin doch im richtigen Verzeichnis??

 

Poste mal bitte deine aktuelle Fehlermeldung. Wenn du das Template “Mobil” benutzt, dann musst du dort deine Anpassungen vornehmen.

Zur Info: Shopware Version 5.3.7

 

Ups! Ein Fehler ist aufgetreten!

Die nachfolgenden Hinweise sollten Ihnen weiterhelfen.

Syntax Error in template „/var/www/vhosts/webseite.de/httpdocs/themes/Frontend/Mobil/newsletter/index/footer.tpl“ on line 46 „<a href=“{$sStart|dirname}/backend/newsletter?campaign={$sCampaign.id}&mailaddress={$sUser.mailaddressID}&hash={$sCampaignHash}" target="_blank" style=„color:#000 !important;“>" modifier ‚dirname‘ not allowed by security setting in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Stack trace:

 #0 engine/Library/Smarty/sysplugins/smarty\_security.php(227): Smarty\_Internal\_TemplateCompilerBase-\>trigger\_template\_error('modifier 'dirna...') #1 engine/Library/Smarty/sysplugins/smarty\_internal\_compile\_private\_modifier.php(98): Smarty\_Security-\>isTrustedPhpModifier('dirname', Object(Smarty\_Internal\_SmartyTemplateCompiler)) #2 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(475): Smarty\_Internal\_Compile\_Private\_Modifier-\>compile(Array, Object(Smarty\_Internal\_SmartyTemplateCompiler), Array, NULL, NULL) #3 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(249): Smarty\_Internal\_TemplateCompilerBase-\>callTagCompiler('private\_modifie...', Array, Array) #4 engine/Library/Smarty/sysplugins/smarty\_internal\_compile\_private\_print\_expression.php(65): Smarty\_Internal\_TemplateCompilerBase-\>compileTag('private\_modifie...', Array, Array) #5 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(475): Smarty\_Internal\_Compile\_Private\_Print\_Expression-\>compile(Array, Object(Smarty\_Internal\_SmartyTemplateCompiler), Array, NULL, NULL) #6 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(249): Smarty\_Internal\_TemplateCompilerBase-\>callTagCompiler('private\_print\_e...', Array, Array) #7 engine/Library/Smarty/sysplugins/smarty\_internal\_templateparser.php(2358): Smarty\_Internal\_TemplateCompilerBase-\>compileTag('private\_print\_e...', Array, Array) #8 engine/Library/Smarty/sysplugins/smarty\_internal\_templateparser.php(3101): Smarty\_Internal\_Templateparser-\>yy\_r28() #9 engine/Library/Smarty/sysplugins/smarty\_internal\_templateparser.php(3201): Smarty\_Internal\_Templateparser-\>yy\_reduce(28) #10 engine/Library/Smarty/sysplugins/smarty\_internal\_smartytemplatecompiler.php(105): Smarty\_Internal\_Templateparser-\>doParse(10, '/backend/newsle...') #11 engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(192): Smarty\_Internal\_SmartyTemplateCompiler-\>doCompile('

Also da muss ich mal nachfargen, ob das Template nach der Änderung überhaupt gespeichert wurde. Wie hast du denn die Anpassung vogenommen? Wurde das File nach der Anpassung auch neu gespeichert? Ist “dirname” auch tatsächlich aus dem TPL raus? Per FTP-Zugang kann dies ja überprüft werden.

Ich habe die Datei mit dem Program Filezilla über ftp hochgeladen und gespeichert.

Der aktuelle Inhalt der Datei footer.tpl ist:

 

  |
   
   
{s name=‚NewsletterFooterNavigation‘}{/s}

   

        {if $sUserGroupData.tax}
            {s name=‚NewsletterFooterInfoIncludeVat‘}{/s}
        {else}
            {s name=‚NewsletterFooterInfoExcludeVat‘}{/s}
        {/if}
   

        |

   
|
   
 

|
   

   

|
   
        {s name=‚NewsletterFooterCopyright‘}{/s}
    |
   

 

  |
    ⇒  |
   
    [
        {s name=‚NewsletterFooterLinkUnsubscribe‘}{/s}]({url module=‚frontend‘ controller=‚newsletter‘ sUnsubscribe=1})
    |
 

  |
    ⇒  |
   
   
        {s name=‚NewsletterFooterLinkNewWindow‘}{/s}

   
    |
 

 

 

 

 

Schau im Backend mal in die Textbausteinverwaltung in den Inhalt des Bausteins „NewsletterFooterLinkNewWindow“

Vermutlich ist bei dir dieser alte Link in der Datenbank / Textbaustein gespeichert