为了账号安全,请及时绑定邮箱和手机立即绑定
  • /**
     * 给观察者定义规范
     *
     * Interface Exception_Observer
     */
    interface Exception_Observer
    {
        public function update(Observable_Exception $e);
    }


    /**
     * 定义观察者
     * Class Observable_Exception
     */
    class Observable_Exception extends Exception
    {
        //保存观察者信息
        public static $_observers = array();
        public static function attach(Exception_Observer $observer)
        {
            self::$_observers[] = $observer;
        }
        public function __construct($message = "", $code = 0, Throwable $previous = null)
        {
            parent::__construct($message, $code, $previous);
            $this->notify();
        }
        public function notify()
        {
            foreach (self::$_observers as $observer) {
                $observer->update($this);
            }
        }
    }

    /**
     * 记录错误日志
     */
    class Logging_Exception_Observer implements Exception_Observer
    {
        protected $_filename = __DIR__.'/error_observer.log';
        public function __construct($filename = null)
        {
            if ($filename!==null && is_string($filename)){
                $this->_filename = $filename;
            }
        }

        public function update(Observable_Exception $e)
        {
            $message = "时间:".date('Y:m:d H:i:s',time()).PHP_EOL;
            $message.= "信息:".$e->getMessage().PHP_EOL;
            $message.= "追踪信息:".$e->getTraceAsString().PHP_EOL;
            $message.= "文件:".$e->getFile().PHP_EOL;
            $message.= "行号:".$e->getLine().PHP_EOL;
            error_log($message,3,$this->_filename);//写到日志中
        }
    }

    /**
     * 测试
     */
    header('content-type:text/html;charset=utf-8');
    require_once 'Exception_Observer.php';
    require_once 'Logging_Exception_Observer.php';
    require_once 'Observable_Exception.php';

    Observable_Exception::attach(new Logging_Exception_Observer());

    class MyException extends Observable_Exception{
        public function test1()
        {
            echo 'this is a test';
        }
    }

    try{
        throw new MyException('出现了异常!');
    }catch (MyException $exception){
        echo $exception->getMessage();
    }

    查看全部
  • Trigger_error 手动触发PHP错误,并自定义错误提示及错误级别。
    查看全部
  • 开始
    查看全部
    0 采集 收起 来源:课程简介

    2020-06-06

  • PHP配置文件中与错误相关选项

    1.error_reporting 设置错误报告级别

    2.display_errors 是否显示错误

    3.log_errors 设置是否将错误信息记录到日志或者error_log中

    4.error_log 设置脚本错误将记录到的文件

    5.log_errors_max_len 设置log_errors的最大字节数

    6.ignore_repeated_errors 是否忽略重复的错误信息

    7.ignore_repeated_source 是否忽略重复错误消息的来源

    8.track_errors 如果开启此选项,最后一个错误将永远保存在$php_errormsg中


    PHP中的错误级别

    1.E_ERROR 致命的运行错误,将终止程序执行

    2.E_WARNING 运行时警告

    3.E_PARSE 语法解析错误

    4.E_NOTICE 通知注意,表示可能表现为错误的情况

    5.E_CORE_ERROR 在PHP初始化启动过程中发生的警告

    6.E_CORE_WARNING PHP初始化启动过程中发生的警告

    7.E_COMPILE_ERROR 致命编译错误

    8.E_COMPILE_WARNGING 编译时警告

    9.E_USER_EORROR 用户产生的错误信息,类似E_ERROR,但是是由用户自己在代码中使用trigger_error()函数产生的。

    10.U_USER_WARNING 用户产生的警告信息,类似E_WARNING,但是是由用户自己在代码中使用trigger_error()函数产生的

    11.E_USER_NOTICE 用户产生的通知信息,类似E_NOTICE,但是是由用户自己在代码中使用trigger_error()函数产生的

    12.E_STRICT 启动PHP对代码的修改建议,以确保代码具有最佳的互操作性和向前的兼容性。

    13.E_DEPRECATED 运行时通知,启动后将会对在未来版本中可能无法正常工作的代码给出警告。

    14.E_USER_DEPRECATED 用户产生的警告信息,类似E_DEPRECATED,但是是通过trigger_error()函数产生的

    15.E_ALL 所有错误和警告信息

    16.E_RECOVERABLE_ERROR 可被捕获的指明错误,它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。如果该错误没有被用户自定义句柄捕获(参见set_error_handler()),将成为一个E_ERROR从而脚本会终止运行

    查看全部
  • <?php

    class shutdown{

    public function endScript(){

    if(error_get_last()){

    echo '<pre>';

    print_r(error_get_last());

    echo '</pre>';

    }

    file_put_contents('E:\www\error_log\test.txt','This is a test.');

    die('end script');


    }

    }

    //md6();

    settype($arr, 'hello');

    register_shutdown_function([new shutdown(),'endScript']);

    ?>


    查看全部
  • <?php

    error_reporting(-1);

    set_error_handler(function($errno,$errmsg,$file,$line){

    echo "<hr /><b>错误代码:</b>[{$errno}] {$errmsg}<br />".PHP_EOL;

    echo "<b>错误行号:</b>{$file}文件中的第{$line}行<br />".PHP_EOL;

    echo "<b>PHP版本:</b>".PHP_VERSION."(".PHP_OS.")".PHP_EOL;

    });

    echo $test;

    settype($arr,'aaa');

    //取消接管

    restore_error_handler();

    ?>

    通过回调函数显示错误信息:

    set_error_handler();

    set_exception_handler();


    查看全部
  • <?php

    ini_set('display_errors', 0);

    error_reporting(-1);

    ini_set('log_errors', 1);

    ini_set('error_log','E:\www\error_log\test.log');

    $date = date('Y-m-d H:i:s',time());

    $message = "用户名:username,密码:123456,时间:{$date},IP地址:{$_SERVER['REMOTE_ADDR']}。";

    error_log($message);

    ?>

    PHP错误类型

    1、语法错误

    2、环境错误

    3、逻辑错误

    Deprecated 最低级别错误,不推荐使用的函数等。

    Notice 通知级别错误,未声明的变量,或数组value等。

    Warning 警告级别的错误,不存在的变量类型等。

    Fatal 致命级别错误,不存在的函数等。

    Parse 语法解析错误,缺少“;”等。

    E_USER_相关的错误。


    display_errors 是否显示错误

    error_reporting(E_ALL~E_NOTICE) 函数设置错误

    error_reporting(0);不显示所有错误,“-1”显示所有错误。

    ini_set('error_reporting',0); 设置为不显示。


    trigger_error()函数触发错误,手动抛出错误。

    trigger_error('错误提示',E_USER_ERROE);


    error_log = "E:\www\error_log\test.log" 在.ini中设置,错误日志保存路径


    查看全部
  • Error_log函数有2个功能 1将消息写入log文件error_log($message) 2发邮件

    查看全部
  • PHP配置文件中的错误相关选项;5982914d0001cc2912800720.jpg

    查看全部
  • Trigger_error用于抛出自定义错误 If(!numberic($num1)){ Trigger_error("必须是合法数字",E_USER_NOTICE)

    查看全部
  • 请输入笔记内容.error_reporting():专业php错误处理设置函数

    error_reporting(0);不显示所有错误,但是解析parse语法错误会显示;

    Error_reporting(E_ALL|~E_WARING)除了警告错误以外的错误级别都报告

    显示错误

    ini_set(Option,value):可以配置php.ini里的选项,当然包括错误处理部分的选项了

    设置错误级别..

    ini_set('error_reporting',0)=>不显示所有错误;

    ini_set('error_reporting',-1)=>显示所有错误;

    php配置文件php.ini设置error_reporting;

    通过error_reporting()函数设置


    查看全部
  • display_errors指定程序运行时现不显示错误

    error_reporting指定错误级别

    查看全部
  • PHP中所有的错误级别

    查看全部
  • php配置文件中与错误相关选项

    查看全部
  • php中年的错误级别(致命错误)

    查看全部
  • php中的错误级别

    查看全部
  • 查看全部
  • 查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
学习本门课程之前,建议先了解一下知识,会更有助于理解和掌握本门课程 1、掌握PHP的基础知识 2、了解面向对象编程
老师告诉你能学到什么?
1、PHP中的错误类型 2、PHP中的错误处理 3、PHP中自定义错误处理器 4、PHP中异常的使用 5、PHP中如何自定义异常类 6、PHP中如何自定义异常处理器

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!