没有不会犯错的开发者,PHP的错误报告功能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。
由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。
所有的出错报告级别可以在任意级别进行修改,所以您如果使用的是共享的主机,没有权限对php.ini, httpd.conf, 或 .htaccess等配置文件进行更改时,您可以在程序中运行出错报告级别配置语句:
<?php ini_set('error_reporting', E_ALL | E_STRICT); ini_set('display_errors', 'Off'); ini_set('log_errors', 'On'); ini_set('error_log', '/usr/local/apache/logs/error_log'); ?>
http://php.net/manual/ini.php 对php.ini的选项配置作了详尽的说明。
set_error_handler() 函数
PHP还允许您通过 set_error_handler( ) 函数指定您自已的出错处理函数:
<?php set_error_handler('my_error_handler'); ?>
上面程序指定了您自已的出错处理函数my_error_handler()。下面是一个实际使用的示例:
<?php function my_error_handler($number, $string, $file, $line, $context) { $error = "= == == == ==\nPHP ERROR\n= == == == ==\n"; $error .= "Number: [$number]\n"; $error .= "String: [$string]\n"; $error .= "File: [$file]\n"; $error .= "Line: [$line]\n"; $error .= "Context:\n" . print_r($context, TRUE) . "\n\n"; error_log($error, 3, '/usr/local/apache/logs/error_log'); } ?>
PHP 5还允许向set_error_handler( )传递第二个参数以限定在什么出错情况下执行出定义的出错处理函数。比如,现在建立一个处理告警级别(warning)错误的函数:
<?php set_error_handler('my_warning_handler', E_WARNING); ?>
PHP5还提供了异常处理机制,详见http://php.net/exceptions
延伸阅读
此文章所在专题列表如下:
- PHP安全编程:register_globals的安全性
- PHP安全编程:不要让不相关的人看到报错信息
- PHP安全编程:网站安全设计的一些原则
- PHP安全编程:可用性与数据跟踪
- PHP安全编程:过滤用户输入
- PHP安全编程:对输出要进行转义
- PHP安全编程:表单与数据安全
- PHP安全编程:从URL的语义进行攻击
- PHP安全编程:文件上传攻击的防御
- PHP安全编程:跨站脚本攻击的防御
- PHP安全编程:跨站请求伪造CSRF的防御
- PHP安全编程:关于表单欺骗提交
- PHP安全编程:HTTP请求欺骗
- PHP安全编程:不要暴露数据库访问权限
- PHP安全编程:防止SQL注入
- PHP安全编程:cookie暴露导致session被劫持
- PHP安全编程:session固定获取合法会话
- PHP安全编程:session劫持的防御
- PHP安全编程:防止源代码的暴露
- PHP安全编程:留心后门URL
- PHP安全编程:阻止文件名被操纵
- PHP安全编程:文件包含的代码注入攻击
- PHP安全编程:文件目录猜测漏洞
- PHP安全编程:打开远程文件的风险
- PHP安全编程:shell命令注入
- PHP安全编程:暴力破解攻击
- PHP安全编程:密码嗅探与重播攻击
- PHP安全编程:记住登录状态的安全做法
- PHP安全编程:共享主机的源码安全
- PHP安全编程:更优的会话数据安全
- PHP安全编程:会话数据注入
- PHP安全编程:主机文件目录浏览
- PHP安全编程:PHP的安全模式
本文地址:http://www.nowamagic.net/librarys/veda/detail/1980,欢迎访问原出处。
大家都在看