免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1547 | 回复: 0
打印 上一主题 下一主题

PHP的错误报告error_reporting详解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-10 21:54 |只看该作者 |倒序浏览
[color="#0000bb"]error_reporting
设定错误讯息回报的等级。
[color="#ff8000"]语法: int error_reporting(int [level]);
[color="#ff8000"]传回值: 整数
[color="#ff8000"]函式种类: PHP 系统功能
   
        
            
            
               
                    
                        
                    
               
            
            
        
        
            [color="#ff8000"]内容说明
        
   
本函式用来设定错误讯息回报的等级,参数 level 是一个整数的位元遮罩 (bitmask),见下表。
   
        
            value
            constant
        
   
   
        
            1
            [color="#000033"]E_ERROR
        
        
            2
            [color="#000033"]E_WARNING
        
        
            4
            [color="#000033"]E_PARSE
        
        
            8
            [color="#000033"]E_NOTICE
        
        
            16
            [color="#000033"]E_CORE_ERROR
        
        
            32
            [color="#000033"]E_CORE_WARNING
        
        
            64
            [color="#000033"]E_COMPILE_ERROR
        
        
            128
            [color="#000033"]E_COMPILE_WARNING
        
        
            256
            [color="#000033"]E_USER_ERROR
        
        
            512
            [color="#000033"]E_USER_WARNING
        
        
            1024
            [color="#000033"]E_USER_NOTICE
        
        
            2047
            [color="#000033"]E_ALL
        
        
            2048
            [color="#000033"]E_STRICT
        
   

  • E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是呼叫 [color="#6666ff"]stat() 函式检视不存在的档案。
  • E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 [color="#6666ff"]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 时,应该已经接触过 /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。
      接下来,要在服务器上测试错误报告。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/3514/showart_1822953.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP