首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP set_error_handler()总是返回null

PHP set_error_handler()总是返回null
EN

Stack Overflow用户
提问于 2015-08-11 03:50:08
回答 2查看 501关注 0票数 2

我不知道到底出了什么问题。

以下操作总是导致输出“无法设置错误处理程序”:

代码语言:javascript
运行
复制
<?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.");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-11 04:37:41

因为执行此函数需要有一个错误,所以如果在执行脚本之前发生错误,则无法调用自定义错误处理程序,因为它当时没有注册。

代码语言:javascript
运行
复制
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

票数 3
EN

Stack Overflow用户

发布于 2016-03-17 20:03:00

我有一个复杂的单例类来处理错误,但我也想知道所有的操作都正常。

我的解决方案是沉默错误报告,并使用要检查的特定字符串触发错误,然后将类中的变量设置为true,并对其进行检查。

就像这样

代码语言:javascript
运行
复制
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
    }
}

这只是一个未经测试的例子,但我希望它能让你知道我是如何解决这个问题的。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31932882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档