Persönliche Daten 503 Service Unavailable undefined function smarty_modifier_salutation()

Hallo zusammen

Nachdem sich ein Benutzer angemeldet hat, erhält er für den Abschnitt “Persönliche Daten” die Fehlermeldung “503 Service Unavailable”. Seine Liefer- und Rechnungsadresse werden deshalb nicht angezeigt und der Kunde kann auch keine Artikel von meinem Shop bestellen (Checkout schlägt fehl weil keine Lieferadresse vorhanden ist).

 

Wenn ich die Debug Möglichkeiten via config.php einsetze, erhalte ich folgende zusätzliche Infos:

Fatal error : Uncaught Error: Call to undefined function smarty_modifier_salutation() in /srv/www/vhosts/reise-artikel.ch/httpdocs/var/cache/production_201702271540/templates/frontend_ModernTheme_de_CH_1_secure/8e/0f/56/8e0f5662f5046358326265d4f686ed1a75cd2203.snippet.index.tpl.php:588 Stack trace: #0 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(180): content_5932856e0e52e3_06267891(Object(Enlight_Template_Default)) #1 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Enlight/View/Default.php(274): Smarty_Internal_TemplateBase->fetch() #2 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(216): Enlight_View_Default->render(Object(Enlight_Template_Default)) #3 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(242): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default)) #4 /srv/www/vhosts/reis in /srv/www/vhosts/reise-artikel.ch/httpdocs/var/cache/production_201702271540/templates/frontend_ModernTheme_de_CH_1_secure/8e/0f/56/8e0f5662f5046358326265d4f686ed1a75cd2203.snippet.index.tpl.php on line 588

Wenn ich das Standard Template verwende und der Kunde sich anmeldet, sehe ich  sehe ich im Abschnitt “Persönliche Daten” die Fehlermeldung:
Fatal error : Uncaught Error: Call to undefined function smarty_modifier_salutation() in /srv/www/vhosts/reise-artikel.ch/httpdocs/var/cache/production_201702271540/templates/frontend_Responsive_de_CH_1_secure/44/3f/b3/443fb365d03ffadd4b8b4560931539eac0c973c4.snippet.index.tpl.php:486 Stack trace: #0 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(180): content_5932a94ce11ed5_06726377(Object(Enlight_Template_Default)) #1 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Enlight/View/Default.php(274): Smarty_Internal_TemplateBase->fetch() #2 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(216): Enlight_View_Default->render(Object(Enlight_Template_Default)) #3 /srv/www/vhosts/reise-artikel.ch/httpdocs/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(242): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default)) #4 /srv/www/vhosts/reise in /srv/www/vhosts/reise-artikel.ch/httpdocs/var/cache/production_201702271540/templates/frontend_Responsive_de_CH_1_secure/44/3f/b3/443fb365d03ffadd4b8b4560931539eac0c973c4.snippet.index.tpl.php on line 486
503 Service Unavailable

Meiner Meinung nach fehlt die Funktion smarty_modifier_salutation(). Was muss ich tun um den Fehler zu beheben?

Gruss
apt

Welche SW-Version hast du denn`?
Plugins mal alle aus gehabt?

@Moritz Naczenski schrieb:

Welche SW-Version hast du denn`?
Plugins mal alle aus gehabt?

Die Version von Shopware ist 5.2.20 und PHP Version 7.0.16 wird verwendet.

@Moritz Naczenski schrieb:

Plugins mal alle aus gehabt?

Nein, Plugins habe ich nicht deaktiviert.

Hallo zusammen

Ich konnte mein geschildertes Problem heute selbst lösen. Die Funktion smarty_modifier_salutation(), welche gemäss der Fehlermeldung nicht definiert sein soll, war tatsächlich nicht definiert. Die Funktion smarty_modifier_salutation() ist im Normalfall in der Datei modifier.salutation.php implementiert. Die Datei modifier.salutation.php ist im Ordner /httpdocs/engine/Library/Enlight/Template/Plugins gespeichert.

Im Pfad kommt das Wort „Enlight“ vor. Enlight ist ein Framework, welches auf dem Framework Zend basiert. Weiter Infos zu dem Ordner gibt es leider nicht.

Ich habe nun festgestellt , dass die Datei modifier.salutation.php  bei meiner produktiven Shop Domain leer (0 Bytes) ist. Warum diese Datei leer ist, vermag ich nicht zu beantworten. Fakt ist, dass das Datum, wann die Datei modifier.salutation.php zuletzt verändert wurde, identisch mit dem Datum aller anderen Dateien ist, welche sich in demselben Ordner befinden.

Damit ich an den ursprünglichen Inhalt kam, habe ich mir den Shopware Shop auf einer anderen Domain neu installiert. Anschliessend konnte ich die Datei modifier.salutation.php auf meine produktive Domain kopieren. Nun tritt der Fehler nicht mehr auf.

Hier noch der Inhalt der Datei modifier.salutation.php, falls jemand anders den Inhalt benötigt (dann kann sich dieser Jemand den Aufwand ersparen, den Shop temporär ein zweites Mal installieren zu müssen):

<?php
/\*\*  \* Shopware 5  \* Copyright (c) shopware AG  \*  \* According to our dual licensing model, this program can be used either  \* under the terms of the GNU Affero General Public License, version 3,  \* or under a proprietary license.  \*  \* The texts of the GNU Affero General Public License with an additional  \* permission and of our proprietary license can be found at and  \* in the LICENSE file you have received along with this program.  \*  \* This program is distributed in the hope that it will be useful,  \* but WITHOUT ANY WARRANTY; without even the implied warranty of  \* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  \* GNU Affero General Public License for more details.  \*  \* "Shopware" is a registered trademark of shopware AG.  \* The licensing of the program under the AGPLv3 does not imply a  \* trademark license. Therefore any rights, title and interest in  \* our trademarks remain entirely with us.  \* @param $salutation  \*/ function smarty\_modifier\_salutation($salutation) {     $snippets = Shopware()-\>Container()-\>get('snippets');     $label = $snippets-\>getNamespace('frontend/salutation')-\>get($salutation);     if (strlen(trim($label)) === 0) {         return $salutation;     }     return $label; }  

Hallo,

 

würde sicherheitshalber mal das Shopware 5.2.20 Release ZIP herunter laden und es mit der aktuellen Produktivumgebung vergleichen. Gut eignet sich dafür das Tool KDiff3. Hatte mir bisher auch immer geholfen, wenn ich sehen wollte, welche Änderungen es in den neueren Minor Releases gab.

Schließlich können von dieser spontanen Änderung auch noch andere Dateien betroffen sein, die man aktuell vielleicht gar nicht bemerkt.

 

PS: Enlight ist eine Erfindung von Shopware, in dessen System sich leicht ehemalige Zend Framework Entwickler zurecht finden sollen. Das stammt noch aus einer Zeit, wo Zend Framework noch seine Hochzeiten hatte. Enlight definiert ein grundlegendes Event System mitsamt eines Controller System, also quasi dem C aus MVC.

 

 

MFG

 

derwunner