放牧代码和思想
专注自然语言处理、机器学习算法
    Why join the Navy if you can be a pirate?

利用.htaccess关闭PHP Error Message

博客上面一片博文爆出了PHP Error Message,但是博文本身又是正常显示的,如下图所示:

原因我找到了,是写博文的时候直接从有格式的博文里复制了关键字,结果wp没有认出来:

。不管那么多,影响美观的东西还是让它滚。

在网上看到使用.htaccess可以在某种程度上更改PHP的错误显示的设置,实际上相当于更改PHP.ini的参数,很是方便。将以下相应代码放到对应目录中的.htaccess文件,即可实现相应功能。事实上,一句php_flag display_errors off就万事大吉了。

关闭错误显示:

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 ,大家有兴趣的话可以阅读英文原版。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » 利用.htaccess关闭PHP Error Message

分享到:更多 ()

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机