当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

16.3PHP配置设定的错误处理方法

9/17/2020 9:31:19 PM 人评论

16.3PHP配置设定的错误处理方法

16.3 PHP配置设定的错误处理方法

通过一些对PHP的配置,也可以帮助开发处理PHP程序错误。PHP的配置文件php.ini中有一些和错误信息排查、错误信息处理有关的配置项,通过了解这些配置项,可以了解如何增强系统安全性和程序的可控性。

16.3.1 和错误处理有关的项

php.ini中和错误处理有关的项及其介绍如下所述。

·display_errors=Off:该项决定是否显示错误信息。当其取值为On时,表示打开选项;为Off时,表示关闭选项。如果该项设置为On,错误信息会输出到用户浏览器端。当开发时,可以将该项设置为On,以便快速找到程序错误所在。当正式发布Web站点时,应该关掉这个特性,并使用错误日志代替,因为打开这个特性可能暴露站点的一些安全信息。以下介绍的各配置项,通常都有On和Off两种设置值。

·log_errors=On:该项决定是否在日志文件中记录错误。当正式发布站点时,该项应该设置为On,这样可以通过日志文件,查找相关错误或异常信息。

·error_log=filename:设定记录错误信息的日志文件。filename为日志文件名,如果设为“syslog”,错误日志将被记录到系统日志中。

·log_errors_max_len=1024:设置错误日志文件的最大长度,设为0可以允许无限长度。

·html_errors=Off:如果该项设置为Off,禁用出错信息中的HTML标记。

·display_startup_errors=Off:该项的作用是,如果display_errors项被打开,即便关闭此参数也不显示PHP启动时的错误。通常需要将该参数设置为Off,除非必须要用于调试中。

·ignore_repeated_errors=Off:忽略重复的错误信息。如果关闭这个参数,错误信息必须出现在同一个文件的同一行才被忽略。如果打开这个参数,则没有这个限制。

·ignore_repeated_source=Off:忽略重复的错误源,忽略错误信息的重复错误源。如果打开这个参数,将不会记录不同的出错文件和对应行的错误信息。

16.3.2 错误报告

错误报告是一把双刃剑,被非法用户利用后,可以用来破坏系统;但是对于开发人员来说,却是调试程序的好工具,当代码运行错误时,可以第一时间通过错误报告来查看出错的代码文件、错误行信息,以及详细的错误内容。

在程序开发阶段,为了方便开发人员调试程序,可以打开PHP的错误报告功能。但是当程序开发完成后,关闭PHP的错误报告功能是最好的选择,这样不仅可以防止用户因为程序运行错误而看到错误报告,也可以防止非法用户利用错误信息攻击系统。

影响PHP错误报告的设置,都可以在PHP的配置文件中找到,下面分步骤介绍修改设置的方法。

(1)使用记事本打开PHP配置文件,并查找字符串“error_reporting=”,将光标定位到错误信息级别设置处,如图16-5所示。

图16-5 错误信息设置语句

error_reporting语句用于设置显示错误信息时的级别,例如当其值被设置为E_ALL时,将显示所有PHP错误信息;当其值为E_USER_ERROR&E_USER_WARNING&E_USER_NOTICE时,将显示与E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE有关的错误码信息。此项设置与error_reporting()函数实现的功能是一样的,关于error_reporting设置语句的取值及说明,请查看表16-1。

表16-1 error_report设置项取值

(2)使用记事本的查找功能再次查找字符串“display_errors=”,将光标定位到错误信息设置语句处,如图16-6所示。

图16-6 错误信息设置语句

display_error语句用于控制错误报告的显示与否,当其值被设置为on时,PHP代码运行时产生的错误,将显示在浏览器中;如果其值被设置为off,PHP代码运行时产生的错误将不会被显示。

以上在PHP配置文件中进行的设置,也可以使用PHP代码来实现,下面演示其实现方法,代码如下。


     <?php
     //
使用ini_set()
函数关闭错误报告
     ini_set("display_errors","off");
     //
运行函数
     getError();
     //
运行未定义的函数
     onError();
     ?>

代码中使用ini_set()函数关闭了错误报告功能,运行未定义的函数时,也不会显示错误信息。

相关教程

共有条评论 网友评论

验证码: 看不清楚?