2016-06-28 8 views
1

logger_error_handler.phprequireという名前のファイルがあります。たとえば、foobar.phpです。これで、再宣言エラーがフラグされます。PHPログ関数の再宣言の問題

<?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

私はここで何をしないのですか?私に再宣言されていないようですが、それを引き起こす原因を特定できません...

+0

ありがとうございました。私はライン '05'と' 12'に焦点を合わせたsooooooだったので、 'require_once'とは対照的に' require'がどのように動作するのか忘れました...これらのあいまいなエラー_ – Valkyrurr

+0

あなたは正しいと最初の? – catbadger

答えて

2

include文をinclude_onceに変更してください。

1

複数のファイルからlogger_error_handler.phpを含めています。 include()をinclude_once()に変更するか、require_once()に変更することもできます。

しかし、ファイルがこれ以上含まれている理由を見てみると、このようなファイルは主に例: "loader.inc.php"ファイルなどは、すべてのページから一度だけ呼び出されます。