Zu Content springen

Fehlercode 118 im JTL-Shop: Ursachen, Analyse und erste Hilfe

Tim Kelle
Tim Kelle | - JTL
Fehlercode 118 im JTL-Shop: Ursachen, Analyse und erste Hilfe
12:12
 

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.

red-warning-alert-risk-danger-sign-icon-symbol-illustration-isolated-red-background-3d-rendering

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 auch functions.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:

  1. Die Datei ist nicht eingebunden
    Wenn functions.php nicht per require_once oder include_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.
  2. Die Funktion ist nicht vorhanden
    Entwickler haben die Funktion zwar in der Planung vorgesehen, aber nie tatsächlich programmiert oder versehentlich gelöscht.
  3. 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.
  4. Die Funktion ist doppelt vorhanden
    Zwei Plugins nutzen zufällig denselben Funktionsnamen. Ohne Absicherung durch function_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.

error code 118-1

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.

Diesen Beitrag teilen