php安全配置记录和常见错误梳理(总结)

时间:2017-04-08

php.ini中记录PHP错误日志的参数:display_errors与log_errors的区别

1)display_errors 
错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项。错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利。推荐关闭此选项。 
 
display_errors = On 
开启状态下,若出现错误,则报错,出现错误提示。即显示所有错误信息。 
 
dispaly_errors = Off 
关闭状态下,若出现错误,则提示:服务器错误,但是不会出现错误提示。即关闭所有错误信息 
 
2)log_errors 
在正式环境下用这个就行了,把错误信息记录在日志里。正好可以关闭错误回显。 
 
log_errors = On  //注意,log_errors设置为On后,那么dispaly_errors就要设置为Off,这两个不能同时打开。 
 
error_log = /Data/logs/php/error.log  //注意,log_errors设置为On时,必须要设置error_log的日志文件路径,并且这个日志文件要能有权限正常写入。 
 
也就是说log_errors = On时,必须指定error_log文件,如果没指定或者指定的文件没有权限写入,那么照样会输出到正常的输出渠道,那么也就使得display_errors 这个指定的Off失效,错误信息还是打印了出来。 
 
对于PHP开发人员来说,一旦项目上线后,第一件事就是应该将display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。 
 
--------------------------------------------------- 
一般说来: 
 
测试环境下的php.ini中的错误日志设置:        
error_reporting = E_ALL  
display_errors = On  
html_errors = On  
log_errors = Off  
 
正式环境下的php.ini中的错误日志设置: 
error_reporting = E_ALL &~ E_NOTICE &~ E_WARNING    //注意这个设置,记得有一次因为这个设置有误,导致了线上一个业务访问出现了nginx 500报错!这个导致了php框架报错!  
display_errors = Off  
log_errors = On  
html_errors = Off  
error_log = /Data/logs/php/error.log 
ignore_repeated_errors = On  
ignore_repeated_source = On  
 
简单讲解下各个配置的意义: 
error_reporting :设置报告哪些错误  
display_errors :设置错误是否作为输出的一部分显示  
html_errors :设置错误信息是否采用html格式  
log_errors :设置是否记录错误信息  
error_log :设置错误信息记录的文件  
ignore_repeated_errors :是否在同一行中重复显示一样的错误信息  
ignore_repeated_source : 是否重复显示来自同个文件同行代码的错误

顺便记录下php的页面老是报时区错误的处理过程:

Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are 
*required* to use the date.timezone setting or the date_default_timezone_set() 
function. In case you used any of those methods and you are still getting this 
warning, you most likely misspelled the timezone identifier. We selected the 
timezone 'UTC' for now, but please set date.timezone to select your timezone. in
/usr/local/www/zabbix2/phpinfo.php on line 2 
date/time support enabled 
"Olson" Timezone Database Version 2013.8 
Timezone Database internal 
Default timezone UTC 
 
修改php.ini 文件 
# vim /usr/local/php/etc/php.ini 
........ 
[Date] 
; Defines the default timezone used by the date functions 
; http://php.net/date.timezone 
date.timezone = Asia/Shanghai
 
注意必须把要 php.ini 复制一份到/usr/local/php/lib/下,否则 php 服务默认会到这个 lib 目录下读取 php.ini 文件,没有的话,就是默认时区UTC,这个时区和北京时间相差8小时。 
[root@i-gxcmjlge lib]# pwd 
/usr/local/php/lib
[root@i-gxcmjlge lib]# ll 
total 72 
drwxr-xr-x 14 root root 4096 Nov 18 01:11 php 
-rw-r--r-- 1 root root 65681 Nov 18 15:01 php.ini 
 
然后重启php服务和nginx/apache服务
  • 共4页:
  • 上一页
  • 2/4
  • 下一页
  • 上一篇:谈谈从phpinfo中能获取哪些值得注意的信息 下一篇:php实现留言板功能(代码详解)

    相关文章

    最新文章