精华内容
下载资源
问答
  • 2016-07-13 23:47:11
    error_reporting(E_ALL);
    ini_set("display_errors", 1);

    服务器设置了错误不提示,因此PHP语法出现问题会提示错误500,解决办法也很简单, 将错误信息显示出来, 将如上代码贴到文件顶部即可。

    更多相关内容
  • PHP错误和异常详解(PHP7错误处理)

    千次阅读 2018-03-12 14:29:51
    世界上没有绝对完美的事,对于程序员来说更是如此,无论我们多么努力、多么细心的开发一个项目,总会有缺陷和错误的存在。错误和异常的异同"错误"和"异常"的概念十分相似,很容易混淆,"...

    世界上没有绝对完美的事,对于程序员来说更是如此,无论我们多么努力、多么细心的开发一个项目,总会有缺陷和错误的存在。

    错误和异常的异同

    "错误"和"异常"的概念十分相似,很容易混淆,"错误"和"异常"都表明了项目出了问题,都会提供相关的信息,并且都有错误类型。然而,"异常机制"是在"错误机制"后才出现的,"异常"是避免"错误"的不足。比较重要的一点就是因为"错误"的信息不丰富我们见过最多的函数说明就是: 成功时候返回***, 错误的时候返回FALSE, 然而一个函数出错的原因可能有多种, 出错的种类更有多种. 一个简单的FALSE, 并不能把具体的错误信息告诉调用者.

    PHP中将代码自身异常(一般是环境或者语法非法所致)成为错误,将运行中出现的逻辑错误称为异常(Exception)错误是没法通过代码处理的,而异常则可以通过try/catch处理.

    异常

    异常是Exception类的对象,在遇到无法修复的状况时抛出,出现问题时,异常用于主动出击,委托职责,异常还可用于防守,预测潜在的问题,减轻其影响。

    Exception对象有两个主要的属性:一个是消息,另一个是数字代码。我们分别可以用getCode()和getMessage()获取这两个属性。如下:

    <?php 
    $exception = new Exception("figthing!!!",100);
    $code = $exception->getCode();//100
    $message = $exception->getMessage();//fight.....

    抛出异常

    当一个异常被抛出后代码会立即停止执行,其后的代码将不会继续执行,PHP 会尝试查找匹配的 "catch" 代码块。如果一个异常没有被捕获,而且又没用使用 set_exception_handler()作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出未能捕获异常( Uncaught Exception ...)的提示信息。
    throw new Exception("this is a exception");//使用throw抛出异常

    捕获异常

    我们应该捕获抛出的异常并且使用优雅的方式处理。拦截并处理异常的方式是,把可能抛出异常的代码放到try/catch块中。并且如果使用多个catch拦截多个异常的时候,只会运行其中一个,如果PHP没有找到合适的catch块,异常会向上冒泡,直到PHP脚本由于致命错误而终止运行。如下:

    try {
    	throw new Exception("Error Processing Request");
    	$pdo = new PDO("mysql://host=wrong_host;dbname=wrong_name");
    } catch (PDOException $e) {
    	echo "pdo error!";
    } catch(Exception $e){
    	echo "exception!";
    }finally{
        echo "end!";//finally是在捕获到任何类型的异常后都会运行的一段代码
    }
    运行结果:exception!end!

    异常处理程序

    那么我们应该如何捕获每个可能抛出的异常呢?PHP允许我们注册一个全局异常处理程序,捕获所有未被捕获的异常。异常处理程序使用set_exception_handler()函数注册(这里使用匿名函数)。

    set_exception_handler(function (Exception $e)
    {
    	echo "我自己定义的异常处理".$e->getMessage();
    });
    throw new Exception("this is a exception");
    
    //运行结果:我自己定义的异常处理this is a exception

    错误

    除了异常之外,PHP还提供了用于报告错误的函数。PHP能触发不同类型的错误,例如致命错误、运行时错误、编译时错误、启动错误以及用户触发的错误。可以在php.ini中设置错误报告方式(这里不做多的解释)

    下面列举一些错误报告级别:

    值          常量                     说明
    1           E_ERROR             报告导致脚本终止运行的致命错误
    2           E_WARNING           报告运行时的警告类错误(脚本不会终止运行)
    4           E_PARSE             报告编译时的语法解析错误
    8           E_NOTICE            报告通知类错误,脚本可能会产生错误
    32767       E_ALL               报告所有的可能出现的错误(不同的PHP版本,常量E_ALL的值也可能不同)

    无论如何都必须遵守以下几条规则:

    • 一定要让PHP报告错误
    • 在开发环境中要显示错误
    • 在生产环境中不能显示错误
    • 在开发环境和生产环境中都要记录错误

    错误处理程序

    与异常处理程序一样,我们也可以使用set_error_handler()注册全局错误处理程序,使用自己的逻辑方式拦截并处理PHP错误。我们要在错误处理程序中调用die()或exit()函数。如果不调用,PHP脚本会从出错的地方继续向下执行。如下:

    set_error_handler(function ($errno,$errstr,$errfile,$errline)//常用的四个参数
    {
    	echo "错误等级:".$errno."<br>错误信息:".$errstr."<br>错误的文件名:".$errfile."<br>错误的行号:".$errline;
    	exit();
    });
    
    trigger_error("this is a error");//自行触发的错误
    
    echo '正常'; 

    运行结果:
    错误等级:1024
    错误信息:this is a error
    错误的文件名:/Users/toby/Desktop/www/Exception.php
    错误的行号:33

    相关的还有一个函数register_shutdown_function()---是一个会在php中止时执行的函数。(有兴趣的可以自行查询一下)

    错误转换为异常

    我们可以把PHP错误转换为异常(并不是所有的错误都可以转换,只能转换php.ini文件中error_reporting指令设置的错误),使用处理异常的现有流程处理错误。这里我们使用set_error_handler()函数将错误信息托管至ErrorException(它是Exception的子类),进而交给现有的异常处系统处理。如下:

    set_exception_handler(function (Exception $e)
    {
    	echo "我自己定义的异常处理".$e->getMessage();
    });
    
    set_error_handler(function ($errno, $errstr, $errfile, $errline )
    {
    	throw new ErrorException($errstr, 0, $errno, $errfile, $errline);//转换为异常
    });
    
    trigger_error("this is a error");//自行触发错误
    运行结果: 我自己定义的异常处理this is a error

    PHP7的错误异常处理

    PHP 7 改变了大多数错误的报告方式。不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出。

    这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获。如果没有匹配的 catch 块,则调用异常处理函数(事先通过 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。

    Error 类并非继承自 Exception 类,所以不能用 catch (Exception $e) { ... } 来捕获 Error。你可以用 catch (Error $e) { ... },或者通过注册异常处理函数( set_exception_handler())来捕获 Error

    $a=1;
    try {
    $a->abc();//未定义此对象
    } catch (Exception $e) {
    	echo "error";
    } catch (Error $e) {
    	echo $e->getCode();
    }

    运行结果:0

    PHP7 中出现了 Throwable 接口,该接口由 Error 和 Exception 实现,用户不能直接实现 Throwable 接口,而只能通过继承 Exception 来实现接口

    try {
    // Code that may throw an Exception or Error.
    } catch (Throwable $t) {
    // Executed only in PHP 7, will not match in PHP 5.x
    } catch (Exception $e) {
    // Executed only in PHP 5.x, will not be reached in PHP 7
    }
    注意实际项目中,在开发环境中我们可以使用Whoops组件,在生产环境中我们可以使用Monolog组件。





    展开全文
  • php错误报告及设置级别

    千次阅读 2019-03-28 16:39:11
    display_errors是否开启PHP输出错误报告的功能。值为:On(默认输出错误报告)、 Off(屏蔽所有错误信息) ini_set() 动态设置php.ini配置文件.如:ini_set(“display_errors”,“On”); //显示所有错误信息 error_...

    在php.ini中设置

    • display_errors是否开启PHP输出错误报告的功能。值为:On(默认输出错误报告)、 Off(屏蔽所有错误信息)
    • ini_set() 动态设置php.ini配置文件.如:ini_set(“display_errors”,“On”); //显示所有错误信息
    • error_reporting: 设置不同的错误报告级别。
    • error_reporting = E_ALL & ~E_NOTICE 可以抛出任何非注意的错误,默认值
    • error_reporting = E_ERROR | E_PARSE | E_CORE_ERROR 只考虑致命的运行时错误、新解析错误和核心错误。
    • error_reporting = E_ALL & ~(E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE) 报告除用户导致的错误之外的所有错误。

    如下所示:php.ini的设置

    error_reporting = E_ALL //将向PHP发送每个错误
    display_errors=Off     	//不显示错误报告
    log_errors=On          	//决定日志语句记录的位置
    log_errors_max_log=1024	// 每个日志项的最大长度
    error_log=G:/myerror.log //指定错误写进的文件
    

    在PHP脚本可以通过error_reporting( )函数动态设置错误报告级别。如:error_reporting(E_ALL);

    <html>
        <head><title>测试错误报告</title></head>
        <body>
            <h2>测试错误报告</h2>
            <?php
                /*开启php.ini中的display_errors指令,只有该指令开启如果有错误报告才输出*/
                ini_set('display_errors', 1);
                /*通过error_reporting()函数设置在本脚本中,输出所有级别的错误报告*/
                error_reporting( E_ALL );
                
                /*“注意(notice)”的报告,不会阻止脚本的执行,并且可能不一定是一个问题 */
                getType( $var ); //调用函数时提供的参数变量没有在之前声明
                
                /*“警告(warning)”的报告,指示一个问题,但是不会阻止脚本的执行 */
                getType(); //调用函数时没有提供必要的参数
                
                /*“错误(error)”的报告,它会终止程序,脚本不会再向下执行 */
                get_Type(); //调用一个没有被定义的函数
            ?>
        </body>
    </html>
    
        error_reporting(E_ALL & ~E_NOTICE);
        
        getType($a);
        echo "1111111111111111<br>";
        
        getType();
        echo "222222222222222222222<br>";
        
        getType3();
        echo "333333333333333333333<br>";
    

    自定义PHP的错误报告处理方式

    自定义错误报告的处理方式,可以完全绕过标准的PHP错误处理函数,这样就可以按自己定义的格式打印错误报告,或改变错误报告打印的位置,以下几种情况可以考虑自定义错误处理。

    • 可以记下错误的信息,及时发现一些生产环境出现的问题。
    • 可以屏蔽错误。
    • 可以控制错误的输出。
    • 可以作为调试工具。

    使用set_error_handler()函数来设置用户自定义错误处理。

        /**
         * 定义Error_Handler函数,作为set_error_handler()的第一个参数"回调"
         * @param  int     $error_level    错误级别
    	 * @param string   $error_message  错误信息
    	 * @param  string  $file           错误所在文件
     	 * @param  int     $lin            错误所在行数
        */
        function error_handler($error_level,$error_message, $file, $line) {
              $EXIT = FALSE;
              switch( $error_level ) {
                  //提醒级别
                  case E_NOTICE:
                  case E_USER_NOTICE :
                       $error_type = 'Notice'; break;
                   //警告级别
                  case E_WARNING:
                  case E_USER_WARNING:
                       $error_type = 'Warning'; break;
                   //错误级别
                  case E_ERROR:
                  case E_USER_ERROR:
                          $error_type = 'Fatal Error';
                          $EXIT = TRUE; break;
                   //其他末知错误
                   default:
                          $error_type = 'Unknown';
                          $EXIT = TRUE; break;
            }
            //直接打印错误信息,也可以写文件或数据库
            printf ("<font color='#FF0000'><b>%s</b></font>: %s in <b>%s</b> on line <b>%d</b><br>\n", $error_type, $error_message, $file, $line);
            
            //若出现错误则跳转到友好错误提示页面
            if(TRUE === $EXIT) {
               echo '<script>location="error.html" </script>';
            }
     	}
     	
     	//屏蔽程序中的错误
    	error_reporting(0); 
    	//把错误的处理交给error_handler()
        set_error_handler('error_handler');
        
        //使用末定义的变量要报 notice 的
        echo $novar;
        //除以0要报警告的
        echo 3/0;  
        //自定义一个错误
        trigger_error('Trigger a fatal error', E_USER_ERROR); 
    

    注意E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING是不会被这个句柄处理的,也就是会用原始的方式显示,不过通常情况下不会发生。

    header("Content-type:text/html;charset=utf8");
    
        //  error_reporting(E_ALL & ~E_NOTICE);
        //在php中注册一个函数, 来处理错误报告, 而不按原来的方式处理了
        set_error_handler("myerrorfun");
    
        $mess = "";
        //自己的错误报告处理函数
        function myerrorfun($error_type, $error_message, $error_file, $error_line) {
        
            global $mess;
            $mess.="发生错误级别为{$error_type}类型, 错误消息<b>{$error_message}</b>, 在文件<font color='red'>{$error_file}</font>中, 第{$error_line}行。<br>";
        }
    
    
    
        getType($a);
    
        echo "1111111111111111<br>";
    
        getType();
    
        echo "222222222222222222222<br>";
    
        echo "333333333333333333333<br>";
        
        echo "---------------------------------------------------------<br>";
        echo $mess;
    

    设置错误日志

    在php文件中使用error_log()来记录日志,就可以将信息写入到myerror.log文件中
    如:error_log(“登录失败了!”);

    windows系统日志查看
    通过右击“我的电脑”-> 选择管理选项->在系统工具菜单中选择事件查看器->在应用程序选项中即可看到日志了。

    Apache日志: 自定义日志文件

    // 默认写到了Web服务器(apache)的错误日志中
     getType($a);
     echo "1111111111111111<br>";
    
     getType();
     echo "222222222222222222222<br>";
    
     error_log("数据库连接失败!");
    
     getType3();
     echo "333333333333333333333<br>";
    

    自定义异常类

    系统异常类

    <?php
    class Exception{
      	protected $message = 'Unknown exception';   // 异常信息
    	protected $code = 0;                  // 用户自定义异常代码
    	protected $file;                      // 发生异常的文件名
    	protected $line;                      // 发生异常的代码行号
     	function __construct($message = null, $code = 0);
    	final function getMessage();          // 返回异常信息
    	final function getCode();             // 返回异常代码
    	final function getFile();             // 返回发生异常的文件名
    	final function getLine();             // 返回发生异常的代码行号
    	final function getTrace();            // backtrace() 数组
    	final function getTraceAsString();  // 已格成化成字符串的 getTrace() 信息
    	 /* 可重载的方法 */
    	function __toString();                // 可输出的字符串
    }
    

    自定义异常类必须继承自系统的异常类

    <?php
        /* 自定义的一个异常处理类,但必须是扩展内异常处理类的子类 */
        class MyException extends Exception{
            //重定义构造器使第一个参数 message 变为必须被指定的属性
            public function __construct($message, $code=0){
                //可以在这里定义一些自己的代码
             //建议同时调用 parent::construct()来检查所有的变量是否已被赋值
                parent::__construct($message, $code);
            }   
            public function __toString() {        
              //重写父类方法,自定义字符串输出的样式
              return __CLASS__.":[".$this->code."]:".$this->message."<br>";
            }
            public function customFunction() {    
                 //为这个异常自定义一个处理方法
                 echo "按自定义的方法处理出现的这个类型的异常<br>";
            }
        }
    ?>
    

    自定义异常

    try { //使用自定义的异常类捕获一个异常,并处理异常
        $error = '允许抛出这个错误';       
        throw new MyException($error);    
            //创建一个自定义的异常类对象,通过throw语句抛出
        echo 'Never executed'; 
            //从这里开始,try代码块内的代码将不会再被执行
    } catch (MyException $e) {        //捕获自定义的异常对象
        echo '捕获异常: '.$e;        //输出捕获的异常消息
        $e->customFunction();  //通过自定义的异常对象中的方法处理异常
    }
    echo '你好呀';              //程序没有崩溃继续向下执行
    

    简单案例

    <?php
    /*
    1. 自定义的异常类, 必须是系统类Exception的子类
    2. 如果继承Exception类, 重写了构造方法,一定要调一下父类中被覆盖的方法
    3. 在try代码之后,必须至少给出一个catch代码块,也可以将多个catch代码块与一个try代码块关联使用。
    那么使用多个catch就可以捕获不同的类所产生的异常。注意顺序。
     */
    
    
    //写出对应这个异常解决方法, 就是一下正常类的结构
    class MyBtException extends Exception{
        function __construct($mess) {
            parent::__construct($mess);
    
    
        }
    
        function changBt() {
            echo "换上备胎!";
        }
    }
    
    class WcException extends Exception {
        function pro() {
            echo "去公厕<br>";
        }
    }
    
    class NoException extends Exception {
        function pro() {
            echo "买面色凑合一下!<br>";
        }
    }
    
    class FlException extends Exception {
        function pro() {
            echo "走小路!<br>";
        }
    }
    
    class  Dm  {
        function gowc($bj) {
    
            if(!$bj) {
                throw new  WcException("马桶不好用了"); 
            }
            
            echo "哈哈, 事儿办的很成功!<br>";
        }
    
        function eat($time) {
            if(!$time) {
                throw new NoException("起来晚了, 早餐没了!");
            }
            echo "吃的很好!<br>";
        }
    
        function dri($dz) {
            if(!$dz) {
                throw new MyBtException("爆胎了");
            }
            echo "车开的不错!<br>";
        }
    
        function run($yu) {
            if(!$yu) {
                throw new FlException("天下雪了, 高速封路了");
            }
            echo "高速很好走!<br>";
        }
    
    }
    
    echo "早上起床<br>";
    
    try{
        $dm = new Dm();
    
        // 1. 上厕所  (马桶不好用了), 去公厕
        $dm -> gowc(true);
    
        // 2. 吃早餐 (没有早点), 买面包
        $dm -> eat(true);
    
        //3. 开车上班 (爆tai)    换下
        $dm ->dri(true);
    
        //4. 上高速  (下雪)  小路
        $dm->run(false);
    } catch(MyBtException $e) {    //  Exception $e = new Exception('');
        echo $e->getMessage()."<br>";
        //自定义类中的解决方法调用, 解决了问题
        $e->changBt()."<br>";
        
        try {
        
        }catch(Exception $e) {
            
        }
    
    } catch(NoException $e) {
        echo $e->getMessage()."<br>";
        $e->pro();
    } catch(WcException $e) {
        echo $e->getMessage()."<br>";
        $e->pro();
    } catch(Exception $e) {
        echo $e->getMessage()."<br>";
        //$e->pro();
    }
    
    echo "到公司开始工作<br>";
    
    展开全文
  • php错误级别设置

    千次阅读 2017-05-20 17:20:22
    在默认情况下,php将报告除了通知之外的所有错误错误报告级别是通过一些预定义的常量来设置的,语法int error_reporting ( [int level] )如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:...
    在php.ini中可以设置服务器对错误的报警级别。在默认情况下,php将报告除了通知之外的所有错误。
    错误报告级别是通过一些预定义的常量来设置的,

    语法
    int error_reporting ( [int level] )
    如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:
    如下表所示:
    1        E_ERROR        报告运行时的致命错误
    2        E_WARNING        报告运行的非致命错误

    4        E_PARSE        报告解析错误
    8        E_NOTICE        报告通告,注意,表示所做的事情可能是错误的.
    16           E_CORE_ERROR        报告PHP引擎启动失败
    32           E_CORE_WARNING    报告PHP引擎启动时非致命错误

    64           E_COMPILE_ERROR    报告编译错误
    128         E_COMPILE_WARNING    报告编译时出现的非致命错误

    256         E_USER_ERROR        报告用户触发的错误
    512         E_USER_WARNING    报告用户触发的警告

    1024          E_USER_NOTICE        报告用户触发的通告
    2047       E_ALL            报告所有的错误和警告
    2048       E_STRICT        报告不赞成的用法和不推荐的行为

    在php.ini文件中,默认的报告是除了通知之外的所有错误,如下语句设定:
        error_reporting = E_ALL & ~ (E_NOTICE)
    在上面的表达式中,符号"&"表示几个条件这间的并列,而"~"表示否定,即NOT的含义.
    如果想忽略警告信息,可以设定如下语句:
        error_reporting = E_ALL & ~(E_NOTICE) & ~(E_WARNING)
    在php.ini文件中,和错误有关的设置有如下几个:
    (1)error_reporting,设定错误级别
    (2)display_errors,是否显示错误报告,设置为ON则打开,设置为OFF则关闭所有错误提示
    (3)log_errors,默认设置为OFF,是否记录错误日志;
    (4)track_errors,默认设置为OFF,该选项可以帮助解决代码中的错误,而不是让PHP提供其默认的功能。


    网上搜集 :
    E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 stat() 函式检视不存在的档案。


    E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 ereg()。
    E_ERROR 通常会显示出来,亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。
    E_PARSE 从语法中剖析错误。
    E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
    E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。
    PHP 的错误报告
      php.ini 文件中有许多配置设置。您应当已经设置好自己的 php.ini 文件并把它放在合适的目录中,就像在 Linux 上安装 PHP 和 Apache 2 的文档说明中所示的那样。在调试 PHP 应用程序时,应当知道两个配置变量。下面是这两个变量及其默认值:
    display_errors = Off
    error_reporting = E_ALL
      通过在 php.ini 文件中搜索它们,可以发现这两个变量当前的默认值。display_errors 变量的目的很明显 —— 它告诉 PHP 是否显示错误。默认值是 Off。但是,要让开发过程更加轻松,请把这个值设为 On:
    display_errors = On
      error_reporting 变量的默认值是 E_ALL。这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它在屏幕上为一些小事(例如变量未初始化)也显示提示,会搞糟浏览器的输出。我只想看到错误和不良编码实践,但是不想看到 无害的提示。所以,请用以下值代替 error_reporting 的默认值:
    error_reporting = E_ALL & ~E_NOTICE
      重新启动 Apache,就全部设置好了。接下来,将学习如何在 Apache 上做同样的事。
      服务器上的错误报告
      依赖于 Apache 正在做的工作,在 PHP 中打开错误报告可能没法工作,因为在计算机上可能有多个 PHP 版本。有时很难区分 Apache 正在使用哪个 PHP 版本,因为 Apache 只能查看一个 php.ini 文件。不知道 Apache 正在使用哪个 php.ini 文件配置自己是一个安全问题。但是,有一种方法可以在 Apache 中配置 PHP 变量,从而保证设置了正确的出错级别。
      而且,最好知道如何在服务器端设置这些配置变量,以否决或抢占 php.ini 文件,从而提供更高级别的安全性。
    在配置 Apache 时,应该已经接触过 <apache2-install-dir>/conf/httpd.conf 中 http.conf 文件中的基本配置。
      要做在 php.ini 文件中已经做过的事,请把下列各行添加到 httpd.conf,覆盖任何 php.ini 文件:
    php_flag   display_errors         on
    php_value error_reporting       2039
      这会覆盖在 php.ini 文件中为 display_errors 已经设置的标志,以及 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果愿意采用 E_ALL,请把值设为 2047。同样,还是要重启 Apache。
      接下来,要在服务器上测试错误报告。

    关于error_reporting()这个函数,它是可以屏蔽到一些错误信息,但是PHP 核心造成的错误,是无法屏蔽的,因为PHP 核心造成的错误会直接导致PHP文件编译失败,因为书写格式没有按照PHP的编码规则写而造成的错误,是无法屏蔽的

    * For now, avoid warnings of E_STRICT mode
    * (this must be done before function definitions)
    */
    if (defined(’E_STRICT’)) {
        $old_error_reporting = error_reporting(0);
        if ($old_error_reporting & E_STRICT) {
            error_reporting($old_error_reporting ^ E_STRICT);
        } else {
            error_reporting($old_error_reporting);
        }
        unset($old_error_reporting);

    常见的如下:

    // Turn off all error reporting;关闭所有的错误
    error_reporting(0);
    // Report simple running errors;报告一个简单的运行错误
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    // Reporting E_NOTICE can be good too (to report uninitialized
    // variables or catch variable name misspellings …);包括报告一些未初始化的变量或捕捉变量名的拼写错误
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    // Report all errors except E_NOTICE
    // This is the default value set in php.ini;报告所有的错误但不包括E_NOTICE
    error_reporting(E_ALL ^ E_NOTICE);
    // Report all PHP errors (bitwise 63 may be used in PHP 3);报告所有的错误
    error_reporting(E_ALL);
    // Same as error_reporting(E_ALL);同上
    ini_set(’error_reporting’, E_ALL);

    展开全文
  • PHP错误级别以及FPM错误日志设置

    千次阅读 2018-06-09 09:57:15
    日志是程序在某个时间点的快照,日志可以分为访问日志、业务日志、调试日志、错误日志等等。日志可以用来程序性能分析、业务分析、数据挖掘、机器学习。。。。。。日志很重要!日志很重要!日志很重要!重要的事情要...
  • 如何屏蔽PHP错误

    千次阅读 2018-05-19 09:00:56
    @屏蔽法 @在php中一个抑制错误的符号,即便是你开启了报错功能,只要在错误语句之前加上@符号,便可屏蔽了错误信息。使用@抑制错误之前,会出现一个警告错误。error_reporting屏蔽法 在php文件开始之前,我们可以...
  • php错误提示的关闭与显示所有错误

    千次阅读 2017-09-09 11:07:54
    在进行php代码编写的时候,如果是一些无关功能的notice可以选择关闭,而在进行代码编写的时候,要尽可能的找出所有错误,方便我们进行修改,在这里总结了一下常用的php错误提示关闭以及显示所有错误的方法。
  • 架构是简单的单机 nginx +php ,没有并发量,收到500错误,多是php的问题,500错误单从http协议的响应来看,是看不出什么错误的,最好的方式是记录php错误日志。以下是解决问题的思路,一步一步的来, 1)查看...
  • PHP错误日志

    万次阅读 2013-07-18 16:27:11
    对于PHP开发者来说,一旦某个产品投入使用,应该立即将display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是,任何一个产品在投入使用后,都难免会有错误出现,...
  • 1、除了将php.ini配置为: display_errors = on; error_reporting = E_ALL & ~E_NOTICE; 2、还要再php网站的根目录下面新建一个web.config文件: iis的配置, 注意你首先需要在你的网站根目录添加...
  • PHP错误提示的关闭方法详解

    千次阅读 2016-12-30 10:46:57
    可以关闭所有notice 和 warning 级别的错误。 把这个语句放在您脚本的功用包含文件中,通常为config.php 或者conn.php 中就可以控制输出了。 当然我也也可以在php.ini中进行设置了方法如下 打开
  • PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录到错误日志中),如果设置中开启了 display_errors,则同时把错误信息打印到屏幕上。 项目中常用的设置 switch (ENVIRONMENT) { // 对于开发环境...
  • nginx开启PHP错误日志

    千次阅读 2016-05-20 12:42:58
    nginx开启PHP错误日志
  • 开启php-fpm php错误日志

    万次阅读 2017-11-02 10:12:26
    所以我们要进行如下的设置就能查看到nginx下php-fpm不记录php错误日志的方法: 1,修改php-fpm.conf中的配置,如果没有请增加: 复制代码 代码如下: [global] error_log = log/php_error_log [www] ...
  • 这几天乐意黎折腾了云主机,从头学起,花了一...把程序通过FTP部署上去, 却在Centos系统中显示 500 错误. 却看不出是什么问题,只能在Centos系统中开启错误提示, 才能看出来。 我安装的是php7 1. 打开php.ini文件
  • 有空必看 - PHP错误与异常处理

    千次阅读 2020-11-05 21:45:13
     说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程序,内容如下,然后命令行执行:php test.php <?php $num = 0; try { echo 1 / $num; }...
  • *php开启错误日志 && 慢日志

    千次阅读 2019-01-02 19:42:06
    错误日志 前言: ...问:那么问题来了,我们在生产该如何查看php等相关错误呢? 答:记录到错误日志里。error.log(或直接发送到syslog) 下边就如何配置和查看日志作出简单叙述。 一.相关配置...
  • php错误:failed to open stream: No such file or directory in原因分析及解决方法发布于 2014-12-17 16:19:17 | 11066 次阅读 | 评论: 2 | 来源: PHPERZPHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名...
  • 怎样让PHP提示错误信息

    千次阅读 2019-03-04 08:45:38
    怎样让PHP提示错误信息说明工具解决步骤1. 首先使用编辑工具打开 php 配置文件2. 在php配置文件的头部添加以下几行代码3.重启服务器 说明 从源代码安装PHP的默认情况下,在进行代码测试时不提示任何错误信息,其实...
  • Think PHP错误写法导致SQL注入 后端代码 # application/home/controller/IndexController.class.php <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { ...
  • php错误日志记录设置

    千次阅读 2016-05-27 17:33:41
    对于PHP开发者来说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。但是,任何一个产品在投入使用后,都难 免会有错误出现,...
  • PHP 注册错误和异常处理机制 介绍 全局捕捉异常错误,并记录到日志系统 代码 <?php namespace lib; use Exception; class Error { /** * 配置参数 * @var array */ protected static $...
  • php 输出错误信息及设置错误级别

    千次阅读 2017-11-21 14:44:24
    方法一 修改php.ini;...显示php开始错误信息 display_startup_errors = On ;日志记录错误信息 log_errors = On 方法二 需要调试的php 文件头部加入ini_set('display_errors',1); //错误信息 ini_set('displ
  • php开启错误提示(详解)

    千次阅读 2016-12-08 21:15:30
    1.在php.ini文件里加上下面两句 display_errors = On error_reporting = E_ALL | E_STRICT 2.在Apache的 httpd.conf文件里加上下面两句 php_flag display_errors on php_value error_reporting 2039 3.重启apache,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 551,351
精华内容 220,540
关键字:

php错误

友情链接: tnkrvnx.rar