2016-06-28 8 views
1

Ich habe diese PHP benannt logger_error_handler.phprequire d in einer anderen Datei, sagen foobar.php. Es weist jetzt auf einen Fehler bei der erneuten Deklaration hin. hierPHP Log Funktion Redeablication Problem

<?php 
    error_reporting(E_ALL); 
    set_error_handler("logger_error_handler"); 

    function logger_error_handler($errno, $errstr, $errfile=null, $errline=null, $errcontext=null) { 
     $log = date("Y-m-d H:i:s - "); 
     $log .= "Error: [". $errno ."], $errstr in $errfile on line $errline, "; 
     $log .= "Variables: ". print_r($errcontext, true) ."\r\n"; 

     error_log($log, 3, "error_log.log"); 
     die("Error Found!"); 
    } 
?> 

Fatal error: Cannot redeclare logger_error_handler() (previously declared in C:\xampp\htdocs\foo\bar\logger_error_handler.php:5) in C:\xampp\htdocs\foo\bar\logger_error_handler.php on line 12
line 05: referring to function declaration
line 12: referring to closing tag of said function

Was bin ich? Scheint keine Redewendung für mich, aber ich kann nicht feststellen, was es verursacht ...

+0

Danke. Ich war sooooo fokussiert mit dem, was in Zeile '05' und' 12' ist, ich habe vergessen, wie 'require' funktioniert im Gegensatz zu' require_once' ... _diese mehrdeutigen Fehler_ – Valkyrurr

+0

kannst du bitte meine Antwort akzeptieren, wie sie richtig war und zuerst ? – catbadger

Antwort

2

Ändern Sie Ihre Include-Anweisung zu einem include_once.

1

Sie Logger_error_handler.php aus mehr als einer Datei enthalten. Eine "schmutzige" Option besteht darin, include() zu include_once() oder sogar require_once() zu ändern.

Allerdings sollten Sie auch einen Blick darauf werfen, warum die Datei mehr als einmal enthalten ist. Dateien wie diese sollten hauptsächlich aus z. eine "loader.inc.php" fil etc, die nur einmal von jeder Seite aufgerufen wird.