我不知道到底出了什么问题。
以下操作总是导致输出“无法设置错误处理程序”:
<?php
function die_on_error($errno, $errstr, $errfile, $errline, $errcontext){
echo "\n\nThere was an error. Today is a good day to die.";
echo "\n\n\$errno: $errno";
echo "\n\n\$errstr: $errstr";
echo "\n\n\$errfile: $errfile";
echo "\n\n\$errline: $errline";
echo "\n\n\$errcontext: ";
var_dump($errcontext);
die();
}
if (is_null(set_error_handler('die_on_error'))){
die("\n\nCould not set an error handler.");
}发布于 2015-08-11 04:37:41
因为执行此函数需要有一个错误,所以如果在执行脚本之前发生错误,则无法调用自定义错误处理程序,因为它当时没有注册。
function die_on_error($errno, $errstr, $errfile, $errline, $errcontext){
echo"This is sparta";
echo "\n\n\$errno: $errno";
echo "\n\n\$errstr: $errstr";
echo "\n\n\$errfile: $errfile";
echo "\n\n\$errline: $errline";
echo "\n\n\$errcontext: ";
var_dump($errcontext);
die();
}
print_r(set_error_handler('die_on_error'));
trigger_error("Incorrect array", E_USER_WARNING);demo
发布于 2016-03-17 20:03:00
我有一个复杂的单例类来处理错误,但我也想知道所有的操作都正常。
我的解决方案是沉默错误报告,并使用要检查的特定字符串触发错误,然后将类中的变量设置为true,并对其进行检查。
就像这样
class myerror
{
private $enabled;
public function __construct()
{
if ($this->set_handler() === false) die('Error Handler Failed To Init...');
}
private function set_handler()
{
$methodVariable = array('myerror', 'error_handler');
if (is_callable($methodVariable, true, $callable_name) === false return false;
@set_error_handler($callable_name, E_ALL);
trigger_error('Error Init', E_USER_NOTICE);
return $this->enabled;
}
public static function error_handler($errNo, $errStr, $errFile, $errLine)
{
if($errStr == 'Error Init')
{
$this->enabled = true;
return;
}
// do something with the error
}
}这只是一个未经测试的例子,但我希望它能让你知道我是如何解决这个问题的。:)
https://stackoverflow.com/questions/31932882
复制相似问题