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.