
Fehlercode 118 im JTL-Shop: Ursachen, Analyse und erste Hilfe
Onlinehändler, die mit dem JTL-Shop arbeiten, wissen: Ein fehlerfreier Betrieb des Shops ist essenziell für Umsatz, Kundenzufriedenheit und SEO. Umso kritischer wird es, wenn plötzlich ein technischer Fehler auftaucht – etwa in Form der kryptischen Meldung „jtl code 118“.
Was auf den ersten Blick nach einem internen Systemproblem aussieht, entpuppt sich bei genauerem Hinsehen meist als Folge einer fehlerhaften Erweiterung, Plugin-Problematik oder fehlerhaften Funktionen. In diesem Artikel erfährst Du, was genau hinter diesem Fehler steckt, wie Du ihn identifizierst und welche Rolle die Datei functions.php
dabei spielt. So kannst Du strukturiert an die Fehlerbehebung herangehen – ohne auf externe Entwickler angewiesen zu sein.
Was bedeutet „jtl code 118“?
Der Fehlercode 118 ist kein spezifischer Fehler, der von JTL mit einer festen Beschreibung versehen wurde, sondern tritt im Rahmen von Plugin-Prozessen oder individuellen Erweiterungen im Shop auf. In der Regel handelt es sich um einen PHP-bezogenen Fehler – etwa einen fehlgeschlagenen Funktionsaufruf, eine nicht geladene Datei oder einen Konflikt zwischen mehreren Modulen.
Die genaue Fehlermeldung lautet häufig:
Fatal error: Call to undefined function ... in ... on line ...
Das bedeutet: Der JTL-Shop versucht, eine Funktion aufzurufen, die nicht existiert oder nicht zur Verfügung steht – und bricht deshalb an dieser Stelle ab. Oft sind es Plugins oder Templates, die in ihrer functions.php
auf eine Funktion zugreifen möchten, die nicht eingebunden oder schlichtweg nicht definiert ist.
Typische Auslöser für den Fehlercode 118
Fehler 118 taucht vor allem in diesen Situationen auf:
- Direkt nach der -Aktualisierung
Neue Plugins fügen eigene PHP-Dateien ein, darunter oft auchfunctions.php
. Wird diese Datei nicht korrekt eingebunden oder fehlt eine Funktion, quittiert der Shop das mit einem Fehler. - Nach einem Update des JTL-Shops
Änderungen im Core von JTL führen dazu, dass veraltete Plugins nicht mehr kompatibel sind. Alte Funktionsaufrufe funktionieren dann nicht mehr oder werden gar nicht mehr unterstützt. - Bei individuell entwickelten Erweiterungen oder Scripten
Viele Shopbetreiber nutzen eigene PHP-Snippets, um z. B. Checkout-Felder zu erweitern oder Produktanzeigen individuell zu gestalten. Werden diese nicht sauber programmiert oder korrekt eingebunden, kann ein Fehler 118 entstehen. - Template-Anpassungen durch Agenturen oder Entwickler
Besonders im Template-Umfeld greifen viele Anpassungen auf externe Funktionen zurück, z. B. zur Berechnung von Rabatten oder zum Auslesen von Benutzerdaten. Auch hier gilt: Fehlt die Funktion oder ist sie falsch benannt, droht der Absturz.
Warum die Datei functions.php
häufig beteiligt ist
Die Datei functions.php
ist sozusagen das Nervenzentrum vieler Plugins und Templates. In ihr werden eigene PHP-Funktionen definiert, die innerhalb des Shops verwendet werden sollen – zum Beispiel zur Preismanipulation, Datenverarbeitung oder Individualisierung von Shopprozessen.
Doch genau hier lauern viele Fehlerquellen. Denn:
- Die Datei ist nicht eingebunden
Wennfunctions.php
nicht perrequire_once
oderinclude_once
korrekt in das Plugin oder Template geladen wird, stehen die Funktionen im weiteren Shopverlauf nicht zur Verfügung – und führen beim Aufruf zum Fehler 118. - Die Funktion ist nicht vorhanden
Entwickler haben die Funktion zwar in der Planung vorgesehen, aber nie tatsächlich programmiert oder versehentlich gelöscht. - Die Funktion ist falsch geschrieben
PHP unterscheidet zwischen Groß- und Kleinschreibung bei Funktionsnamen. Schon ein fehlendes oder zusätzliches Zeichen reicht aus, damit der Aufruf scheitert. - Die Funktion ist doppelt vorhanden
Zwei Plugins nutzen zufällig denselben Funktionsnamen. Ohne Absicherung durchfunction_exists()
überschreiben sie sich gegenseitig – bis der Shop abstürzt.
Die richtige Herangehensweise zur Fehleranalyse
Wenn Du im Shop mit Code 118 konfrontiert wirst, solltest Du in folgenden Schritten vorgehen:
1. Fehlerausgabe aktivieren
Im JTL-Shop kannst Du unter includes/config.JTL-Shop.ini.php
den Developer-Modus aktivieren. Setze dazu:
[debug]
debug = true
Anschließend zeigt Dir der Shop detaillierte Fehlerausgaben, inklusive Pfad zur problematischen Datei und zur fehlerhaften Funktion.
2. Logdateien prüfen
Auf dem Server findest Du meist im logs
-Verzeichnis aktuelle Error-Logs. Alternativ kannst Du in Deinem Hosting-Panel (z. B. cPanel oder Plesk) auf PHP-Logs zugreifen. Suche dort nach dem Begriff Fatal error
in Kombination mit dem Funktionsnamen.
3. Plugin identifizieren
Wenn der Fehler im Zusammenhang mit einem Plugin steht, zeigt die Fehlermeldung oft den Pfad zur Plugin-Datei. Beispiel:
/includes/plugins/meinPlugin/version/Frontend/functions.php
Hier kannst Du gezielt nachsehen, welche Funktion fehlt, fehlerhaft geschrieben ist oder auf andere, nicht geladene Ressourcen zugreift.
Praktisches Beispiel
Ein Plugin zur Anzeige kundenindividueller Preise enthält folgenden Code in der Bootstrap.php
:
require_once PFAD_PLUGIN . 'includes/functions.php';
zeigeIndividuellenPreis($kunde);
In der functions.php
ist jedoch keine Funktion zeigeIndividuellenPreis()
definiert – oder die Datei functions.php
fehlt komplett. Das Resultat: Der Aufruf schlägt fehl, der Shop wirft jtl code 118
und bleibt im schlimmsten Fall unbenutzbar.
Erste Hilfe: So reagierst Du richtig
Gerade wenn der Fehler plötzlich auftritt und der Shop nicht mehr aufrufbar ist, solltest Du pragmatisch vorgehen:
- Deaktiviere über das Dateisystem das betroffene Plugin (z. B. durch Umbenennen des Plugin-Ordners)
- Lade die Seite neu – ist der Shop wieder erreichbar, liegt der Fehler eindeutig im Plugin
- Alternativ: Stelle einen Backup-Zustand wieder her, der noch funktionierte, und beginne dann mit einer gezielten Fehleranalyse
Praxisnahe Fehlerquellen und typische Stolperfallen bei JTL Code 118
Der Fehlercode 118 tritt in JTL-Shops häufig in Kombination mit individuellen Erweiterungen, selbst entwickelten Plugins oder nicht aktualisierten Drittanbieter-Modulen auf. In vielen Fällen ist die Ursache banal – aber der Effekt gravierend: Die Seite lädt nicht mehr, Prozesse brechen ab oder bestimmte Shop-Funktionen funktionieren nicht mehr.
🛠️ Praxisbeispiel 1: Veraltetes Plugin nach JTL-Shop-Update
Ein Onlinehändler aktualisiert seinen JTL-Shop auf die neueste Version, ohne alle verwendeten Plugins vorher zu prüfen. Eines dieser Plugins – ein beliebtes Tool zur Rabattlogik – nutzt eine Funktion berechneRabatt()
in seiner functions.php
. Nach dem Update fehlt diese Funktion oder wurde in der neuen Version des Plugins verlagert. Der Shop ruft sie dennoch auf, weil sie z. B. in einer eigenen Vorlage eingebunden ist – und Code 118 wird ausgelöst.
🔍 Lerneffekt: Jedes Update am Shop erfordert eine Kontrolle der Plugin-Kompatibilität. Nicht gepflegte Plugins sind ein hohes Risiko.
🛠️ Praxisbeispiel 2: Fehlerhafte Integration eigener Funktionen
Ein Entwickler erweitert ein Template um eine eigene PHP-Funktion zeigeLieferzeit()
. Diese wird im Template korrekt aufgerufen, aber vergessen wurde die Einbindung der functions.php
, in der diese Funktion steht. Im Frontend führt der Aufruf dann zum bekannten Fehler 118 – weil der Shop die Funktion schlicht nicht kennt.
🔍 Lerneffekt: Jede selbst geschriebene Funktion muss korrekt eingebunden werden. Schon ein falscher Pfad reicht für den Fehler.
🛠️ Praxisbeispiel 3: Funktionskonflikt durch Namensüberschneidungen
Zwei Plugins verwenden zufällig denselben Funktionsnamen ladeBenutzerInfo()
. Ohne Schutzmechanismen wie function_exists()
kommt es zum „cannot redeclare function“-Fehler – ebenfalls eine Variante von Code 118. Der Shop weiß nicht, welche Version er verwenden soll, und bricht ab.
🔍 Lerneffekt: Namenskonflikte lassen sich leicht vermeiden – mit sauberer Strukturierung und Best Practices bei der Funktionsdefinition.
Best Practices zur Vermeidung von Fehlercode 118
Fehler 118 lässt sich in vielen Fällen durch sauberes und vorausschauendes Arbeiten mit PHP und dem JTL-Framework vermeiden. Besonders bei Plugins und Templates mit eigenen Funktionen empfiehlt sich ein strukturierter Aufbau:
✅ 1. Funktionsnamen absichern
Nutze die PHP-Funktion function_exists()
, um sicherzustellen, dass eine Funktion nicht doppelt definiert wird:
if (!function_exists('ladeBenutzerInfo')) {
function ladeBenutzerInfo() {
// Logik
}
}
Damit stellst Du sicher, dass beim zweiten Laden keine Konflikte auftreten – auch wenn ein anderes Plugin denselben Namen verwendet.
✅ 2. Funktionen mit Namensräumen versehen
Nutze Namespaces, um Funktionskonflikte zu vermeiden – besonders bei umfangreichen Plugins:
namespace MeinPlugin;
function ladeEinstellungen() {
// ...
}
Aufruf erfolgt dann im Plugin oder Template mit \MeinPlugin\ladeEinstellungen();
. So bleibt alles sauber getrennt.
✅ 3. Datei-Einbindung kontrollieren
Verwende beim Laden von functions.php
ausschließlich require_once
, um Mehrfach-Einbindungen zu vermeiden:
require_once PFAD_ROOT . 'includes/plugins/meinPlugin/functions.php';
Vergiss auch nicht, Pfadvariablen wie PFAD_ROOT
oder PFAD_PLUGIN
korrekt zu definieren – ansonsten sucht PHP an der falschen Stelle.
✅ 4. Funktionen dokumentieren
Dokumentiere jede eigene Funktion klar mit:
- Zweck der Funktion
- Eingabeparameter
- Rückgabewert
- Hinweis, wo sie verwendet wird
So lassen sich bei Änderungen oder bei der Zusammenarbeit mit Agenturen Fehler schneller identifizieren.
Troubleshooting-Guide: Schritt-für-Schritt bei JTL Code 118
Wenn der Fehler bereits auftritt, hilft ein strukturiertes Vorgehen:
Schritt | Was Du überprüfen solltest | Typische Hinweise |
---|---|---|
1 | Developer-Modus aktivieren | Genaue Fehlerzeile, Dateipfad, Funktionsname |
2 | Error-Logs auslesen | PHP-Fehler wie Call to undefined function |
3 | Plugin-Verzeichnis analysieren | Liegt der Fehler in einem Plugin? Welches Plugin ist betroffen? |
4 | Datei- und Funktionsprüfung | Existiert die Funktion? Ist sie korrekt eingebunden? |
5 | Konflikte mit anderen Plugins | Doppelte Funktionsnamen oder Mehrfachdefinitionen? |
6 | Temporäre Deaktivierung von Plugins | Shop wieder erreichbar? Fehler lokalisiert? |
Mit dieser Checkliste kannst Du den Fehler in den meisten Fällen aufspüren – selbst ohne tiefgehende PHP-Kenntnisse.
Empfehlungen für Entwickler und Shopbetreiber
Für Entwickler:
Wenn Du Plugins entwickelst oder Templates anpasst, denke immer an künftige Updates und Erweiterungen. Nutze sprechende Namen, arbeite mit Namespaces und dokumentiere jede Funktion. So reduzierst Du das Risiko ungewollter Seiteneffekte deutlich.
Für Shopbetreiber:
Vertraue nicht blind auf Plugins – auch wenn sie im JTL-Store gelistet sind. Prüfe regelmäßig:
- Wann wurde das Plugin zuletzt aktualisiert?
- Gibt es bekannte Konflikte mit Deiner Shopversion?
- Ist der Entwickler erreichbar bei Supportfragen?
Fazit
Fehlercode 118 ist kein spezifisches Problem von JTL selbst, sondern ein Hinweis auf unsauber eingebundene oder fehlerhafte PHP-Funktionen – meist im Kontext von Plugins, Templates oder benutzerdefinierten Erweiterungen. Besonders die Datei functions.php
ist dabei häufig Auslöser von Konflikten, die sich jedoch mit sauberer Struktur und ein paar Grundregeln einfach vermeiden lassen.
Wenn Du strukturiert vorgehst, auf bewährte Methoden setzt und regelmäßig kontrollierst, welche Plugins aktiv sind und wie sie arbeiten, kannst Du Fehlercode 118 nicht nur beheben – sondern künftig komplett vermeiden. Und falls Du doch mal in der Fehlersuche steckst: Log-Dateien, der Developer-Modus und ein klarer Blick auf die Funktionsstruktur helfen Dir zuverlässig weiter.