PHP引擎php.ini参数优化
无论是apache照旧nginx,php.ini都是适合的。而php-fpm.conf适合nginx+fcgi的设置
首先选择产物情况的php.ini(php.ini-production)
/home/oldboy/tools/php-5.3.27/php.ini-development
/home/oldboy/tools/php-5.3.27/php.ini-production
1.打开php的安详模式
php的安详模式是个很是重要的php内嵌的安详机制,可以或许节制一些php中的函数执行,好比system(),同时把许多文件操纵的函数举办了权限节制。
该参数设置如下:
safe_mode = off
;是否启用安详模式
;打开时,php将查抄当前剧本的拥有者是否和被操纵的文件的拥有者沟通。
默认的php.ini是没有打开安详模式的,我们把它打开如下:
safe_mode = On
2.用户组安详
当safe_mode打开时,safe_mode_gid被封锁,那么php剧本可以或许对文件举办会见,并且沟通组的用户也可以或许对文件举办会见。发起配置为: safe_mode_gid = off 假如不举办配置,大概我们无法对我们处事器网站目次下的文件举办操纵了,好比我们需要对文件举办操纵的时候。php5.3.27默认为safe_mode_gid = off
3.封锁危险函数
假如打开了安详模式,那么函数克制是可以不需要的,可是我们为了安详照旧思量进去。好比,我们以为不但愿执行包罗system()等在那的可以或许执行呼吁的php函数,可能可以或许查察php信息的phpinfo()等函数,那么我们就可以克制它们,要领如下: disable_functions = system,passthru,exec,shell_exec,popen,phpinfo disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown
4.封锁php版本信息在http头中的泄漏
为了防备黑客获取处事器中php版本的信息,可以封锁该信息斜路在http头中。 该参数默认设置如下: expose_php = On ;是否袒露php被安装在处事器上的事实(在http头重加上其签名) ;它不会有安详上的直接威胁,但它使得客户端知道处事器上安装了php. 发起配置为 expose_php = Off
5.封锁注册全局变量
在php中提交的变量,包罗利用post或get提交的变量,都将自动注册为全局变量,可以或许直接会见,这是对处事器很是不安详的,所以我们不能让它注册为全局变量,就把注册全局变量选项封锁: 默认设置: register_globals = Off ;是否将E,G,P,C,S变量注册为全局变量 ;打开该指令大概会导致严重的安详问题,除非你的剧本颠末很是仔细的查抄。 ;推荐利用预界说的超全局变量:$_ENV,$_GET,$_POST,$_COOKIE,$_SERVER ;该指令受variables_order指令的影响。 ;php6中已经删除此指令。 发起配置为: register_globals = Off
6.打开magic_quotes_gpc来防备SQl注入
magic_quotes_pgc = Off 这个默认是封锁的,假如它打开后将自动把用户提交对sql的查询举办转换,好比把'转义为\'等,这对防备sql注入有重大浸染,所以我们推荐配置为: magic_quotes_pgc = On
7.错误信息节制
一般php在没有毗连到数据库可能其他环境下会有提示错误,一般错误信息中会包括php剧本当前的路径信息可能查询的SQL语句等信息,这类信息提供应黑客后,是不安详的,所以一般处事器发起克制错误提示。 该参数默认设置如下: display_errors = Off ;是否将错误信息作为输出的一部门显示给终端用户。应用调试时,可以打开,利便查察错误。 ;在最终宣布的web站点上,强烈发起你关掉这个特性,并利用错误日志取代(参看下面)。 ;在最终宣布的web站点打开这个特性大概袒露一些安详信息, ;譬喻你的web处事器上文件路径、数据库筹划或此外信息。 配置为: display_errors = Off (php5.3.27默认即为display_errors = Off) 假如你确实是要显示错误信息,必然要配置显示错误的级别,好比只显示告诫以上的信息: error_reporting = E_WARING & ERROR 虽然,最好是封锁错误提示。
8.错误日志
发起在封锁dispaly_errors后可以或许把错误信息记录下来,便于查找处事器运行的原因: log_errors = On php5.3.27默认即为log_errors = On 同时也要配置错误日志存放的目次,发起根apache的日志存在一起: error_log = /app/logs/php_error.log 留意:给文件必需答允apache用户的和组具有写的权限
9.部门资源限制参数优化
(1)配置每个剧本运行的最长时间 当无法上传交大的文件可能靠山设备数据常常超时,此事需要调解如下配置: max_execution_time = 30 ;每个剧本最大答允执行时间(秒),0暗示没有限制。 ;这个参数有助于阻止劣质剧本无休止的占用处事器资源。 ;该指令仅影响剧本自己的运行时间,任何其他耗费在剧本运行之外的时间 ;如用system()/sleep()函数的利用、数据库查询、文件上传等,都不包罗在内。 ;在安详模式下,你不能用ini_set()在运行时改变这个配置。 (2)每个剧本利用的最大内存 memory_limit = 128M ;一个剧本所可以或许申请到的最大内存字节数(可以利用K和M作为单元) ;这有助于防备劣质剧本耗损完处事器上的所有内存。 ;要可以或许利用该指令必需在编译时利用"--enable-memory-limit"设置选项。 ;假如要打消内存限制,则必需将其设为-1 ;配置了该指令后,memory_get_usage()函数将变为可用。 (3)每个剧本期待输入数据最长时间 max_input_time = -1 ;每个剧本理会输入数据(POST,GET,upload)的最大答允时间(秒) ;-1暗示不限制 配置为 max_input_time = 60; (4)上传文件的最大许可巨细 当上传较大文件时,需要调解如下参数: upload_max_filesize = 2M; ;上传文件的最大许可巨细,一些图片论坛需要这个更大的值。
10.部门安详参数优化