• 用.htaccess设置PHP错误显示

    使用.htaccess可以在某种程度上更改PHP的错误显示的设置,实际上,相当于更改PHP.ini的参数,很是方便。

    将以下相应代码放到对应目录中的.htaccess文件,即可实现相应功能。

    关闭错误显示:

    php_flag display_startup_errors off
    php_flag display_errors off
    php_flag html_errors off
    php_value docref_root 0
    php_value docref_ext 0

    只显示PHP错误:

    php_flag  display_errors        on
    php_flag  display_startup_errors on
    php_value error_reporting        2047

    其中,“2047”为要显示的错误的级别,详细表格如下:

    1 E_ERROR
    2 E_WARNING
    4 E_PARSE
    8 E_NOTICE
    16 E_CORE_ERROR
    32 E_CORE_WARNING
    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
    4096 E_RECOVERABLE_ERROR 

    要把错误保存到日志文件中,可以这样设置:

    # enable PHP error logging
    php_flag  log_errors on
    php_value error_log  /home/path/public_html/domain/PHP_errors.log

    然后,可以设置不允许访问.log文件:

    # prevent access to PHP error log
    <Files PHP_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    设置错误日志的最大体积,以bytes为单位:

    # general directive for setting max error size
    log_errors_max_len integer

    综合上述,.htaccess的PHP错误显示设置汇总:

    # PHP error handling for production servers
    
    # disable display of startup errors
    php_flag display_startup_errors off
    
    # disable display of all other errors
    php_flag display_errors off
    
    # disable html markup of errors
    php_flag html_errors off
    
    # enable logging of errors
    php_flag log_errors on
    
    # disable ignoring of repeat errors
    php_flag ignore_repeated_errors off
    
    # disable ignoring of unique source errors
    php_flag ignore_repeated_source off
    
    # enable logging of php memory leaks
    php_flag report_memleaks on
    
    # preserve most recent error via php_errormsg
    php_flag track_errors on
    
    # disable formatting of error reference links
    php_value docref_root 0
    
    # disable formatting of error reference links
    php_value docref_ext 0
    
    # specify path to php error log
    php_value error_log /home/path/public_html/domain/PHP_errors.log
    
    # specify recording of all php errors
    php_value error_reporting 999999999
    
    # disable max error string length
    php_value log_errors_max_len 0
    
    # protect error log by preventing public access
    <Files /home/path/public_html/domain/PHP_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    以下则是适合开发者应用的设置:

    # PHP error handling for development servers
    php_flag display_startup_errors on
    php_flag display_errors on
    php_flag html_errors on
    php_flag log_errors on
    php_flag ignore_repeated_errors off
    php_flag ignore_repeated_source off
    php_flag report_memleaks on
    php_flag track_errors on
    php_value docref_root 0
    php_value docref_ext 0
    php_value error_log /home/path/public_html/domain/PHP_errors.log
    php_value error_reporting 999999999
    php_value log_errors_max_len 0
    
    <Files /home/path/public_html/domain/PHP_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    本文大部分内容参考这篇文章:How to Enable PHP Error Logging via htaccess,大家有兴趣的话可以阅读英文原版。

    分类: 所谓技术 | 标签: ,,,,