PHP-Fehler: „Cannot redeclare function“ beheben

Erhält man in PHP die Fehlermeldung PHP Fatal error: Cannot redeclare my_function_name in File XY kann sich die Fehlersuche mitunter schwierig gestalten.

PHP beschwert sich, dass die Funktion (in unserem Beispiel my_function_name) an anderer Stelle bereits deklariert wurde.

Bei der Problemlösung können die nachfolgenden beiden Code-Schnipsel helfen. Zunächst gilt es herauszufinden, ob die Funktion durch das eigene Projekt oder durch ein PHP-Modul (bzw. -Erweiterung) deklariert wurde. Dazu kann man folgenden Code nutzen:

$myReflectionFunction = new ReflectionFunction('my_function_name');
if ($myReflectionFunction->isInternal() === true) {
    echo "Function is an internal function";
} else {
    echo "Function is not an internal function";
}

Sofern es sich um eine interne Funktion handelt, kann folgender Code helfen herauszufinden, wo die Funktion tatsächlich bereits deklariert wurde:

$myReflectionFunction = new ReflectionFunction('my_function_name');
echo $myReflectionFunction->getFileName().':'.$myReflectionFunction->getStartLine();

Sofern es sich nicht um eine interne Funktion handelt, wird die Fehlersuche schwierig. Hier ist man oftmals auf Recherche im Netz angewiesen, um die „problematische“ PHP-Erweiterung zu identifizieren, wie ich es hier beschrieben habe.

Schreibe einen Kommentar