PHP错误及异常

让用户看到错误:

 

1, 别有用心的人会有攻击的可能性

 

2, 非专业用户,会觉得你网站就是狗屎

解决办法,把错误让用户看不到,不显示即可。

 


1,在开发时错误必须要显示

 

2,在运营时错误必须不显示

 

3,运营时虽然不让看到,但是将错误保存起来

 

这三大类错误会产生十几种不同的错误情况。


 


  E_ALL                   //所有信息                      值:6143
  E_ERROR                 //致命的运行时错误               值:1
  E_RECOVERABLE_ERROR  

  //接近致命的运行时错误,若未被捕获则视同  E_ERROR  值:4096           
  E_WARNING               //运行时警告(非致命性错误)       值:2
  E_PARSE                 //编译时解析错误                值:4
  E_NOTICE                //运行时提醒(经常是bug,也可能是有意的)   值:8
  E_STRICT                //编码标准化警告(建议如何修改以向前兼容)   值:2048
  E_CORE_ERROR            //PHP启动时初始化过程中的致命错误          值:16
  E_CORE_WARNING          //?PHP启动时初始化过程中的警告(非致命性错) 值:32 
  E_COMPILE_ERROR         //?编译时致命性错                          值:64 
  E_COMPILE_WARNING       //编译时警告(非致命性错)                   值:128
  E_USER_ERROR            //用户自定义的致命错误                     值:256
  E_USER_WARNING          //?用户自定义的警告(非致命性错误)          值:512
  E_USER_NOTICE           //用户自定义的提醒(经常是bug)              值:1024 



错误的处理方式:

 

直接在错误前面加上@抑制错误符号

 

@错误代码;//这种方式的效率很低它等同于下边

 

因为:@相当于:
error_reporting(0);  //关闭错误
错误代码;   //执行代码
error_reporting(1);  //开启错误

 

修改PHP.ini中的错误显示 display_errors = on //直接改成OFF

修改PHP.ini中的error_reporting

 

;error_reporting =  E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors except for  notices and coding standards warnings
;
error_reporting  =  E_ALL &  ~E_NOTICE  //PHP.INI中302行..

 

 

开启错误日志的步骤:


首先打开配置文件php.ini

1,display_error =  Off;  //309行


2,log_errors =  On;  //319行

3,error_log =  'D:/www/logs/err.log'  //363行


 1),不填     apache默认错误日志文件位置


 2),syslog   存到系统的日志文件中

     如果是Window则可以在"我的电脑"-->"管理"-->"日志",如果是linux则在/var/log下面
 

 3),具体路径(我们自己制定)

 

如果我是用的虚拟主机怎么?管理员不准我碰php.ini文件怎么办那?


我们可以在代码里面使用代码来完成


1,ini_set(‘php.ini中的参数’,’值’);  //指定的参数只能在当前的脚本中生效


2,ini_get(); 可以获得php某个参数的值

 

 <?php
 ini_set('error_reporting','E_WARNING');  //制定参数的值

 //注意:代码只能在当前脚本中生效...

 

  ini_get('error_reporting'); 

 ?>

PHP异常

异常,说白了就是指当产生错误或者不确定因素时,改变顺序,进行处理这个脚本


1
2try{
3 throw new Exception();  //如果抛出,下面一部份则不再运行
4
5}catch(exception $e){
6
7echo $e->getMessage();
8
9}
10echo ‘脚本剩下内容’;   //未出现崩溃则运行
11


系统自带异常成员的方法:
getMessage()
getCode()  
getFile()
getLine()
getTrace()    //返回代码跟踪的数组
getTraceAsString();//已格式化的信息
可重载的方法__toString();


#---------------------------------


自定义异常类
1,新建一个类继承原有异常类
2,创建一个构造方法,继承原有构造方法
3,使用__toString方法输出异常
4,创建一个测试异常的类
5,判断异常情况并处理
6,使用


1<?php
2class exception{
3protected $message='Unknown exception';//异常信息
4protected $code=0;//用户自定义的异常代码
5protected $file;//发生异常的文件名
6protected $line;//发生异常的代码行号
7

8function _construct($message=null,$code=0);
9final function getMessage();//返回异常信息
10final function getCode();//返回异常代码
11final function getFile();//返回异常文件名
12final function getLine();//返回发生异常的代码行号
13final function getTrace();//backtrace()数组
14final function gettraceAsString();//已格式化成字符串的getTrace()信息
15

16//可以重载的方法
17function _toString();//可输出的字符串
18}
19?>



评论 (0)

发表评论

上一篇: PHP时间处理 下一篇: PHP常用的数组函数