Php set_error_处理程序已更改bevahvior导致错误

Php set_error_处理程序已更改bevahvior导致错误,php,error-reporting,Php,Error Reporting,多年来,我一直在使用相同的代码片段。它在3个不同的网站上运行良好。我最近开始使用一个新的Hoster,令我惊讶的是,在引用编程错误本身的行之前,以下错误被记录了2到10次。例如,如果一个变量未定义,我得到: PHP Warning: set_error_handler() expects the argument (log_all_errors) to be a valid callback in /home/mysite/public_html/error_handler.php on li

多年来,我一直在使用相同的代码片段。它在3个不同的网站上运行良好。我最近开始使用一个新的Hoster,令我惊讶的是,在引用编程错误本身的行之前,以下错误被记录了2到10次。例如,如果一个变量未定义,我得到:

PHP Warning:  set_error_handler() expects the argument (log_all_errors) to be a valid callback in /home/mysite/public_html/error_handler.php on line 52
然后是变量的误差

下面是一段简化的代码摘录:

# error_handler.php :

     //defining a custom error_log etc ...
     ini_set('display_errors', NULL);
     define('SEND_ERROR_EMAIL_TO', 'mymail@mail.com');
     set_error_handler('log_all_errors');   

# catching the error :

     include ('error_handler.php');
     function log_all_errors($errno, $errstr, $errfile, $errline ) { 
     global $error_type;
     $error_name = (isset($error_type[$errno]) ? $error_type[$errno] : 'Unknown error code - '."'".$_SESSION['ip']."'");
     // defining lock file
     // defining e-mail etc...
     $error_message = $error_name.': '.$errstr.' in '.$errfile.' on line '.$errline;
     error_log($error_message, 0); 
     }
     set_error_handler('log_all_errors'); 

以前的服务器是Apache,现在是ngnix。我已经阅读PHP手册好几个小时了,但我不明白为什么参数log\u all\u errors突然不再是有效的回调

在执行set_error_handler'log_all_errors'之前,需要定义函数log_all_errors;。之前以前从没听说过。它修复了错误吗?这是什么版本的PHP?这只是一个想法。日志中的所有错误都在一个类中吗?@Rocket Hazmat不,不是