mount -t tmpfs -o size=16G tmpfs /dev/shmphp
mount –t tmps /dev/shm /tmp/eacceleratorhtml
只要是临时目录,均可以用tmpfs,如上传图片缩略图临时处理目录和其它加速器的临时目录nginx
不管Apache仍是Nginx,针对php.ini都是适合的。而php-fpm.conf适合nginx+fcgi的配置。必定是先选择产品环境的php.ini(php.ini-production),再此基础上进行下面的调优。redis
PHP的安全模式是PHP很是重要的内嵌的安全机制,可以控制一些PHP中的函数的执行,如system()等,同时把不少文件操做的函数进行了权限控制。默认是没有打开的算法
该参数配置以下:shell
#第338行数据库
safe_mode = Offapache
#修改成:缓存
safe_mode= On安全
当safe_mode打开后,若是safe_mode_gid没是被关闭,那么php脚本可以对文件进行访问,并且相同组的用户也可以对文件进行访问,因此建议设置为:safe_mode_gid = off。PHP5.3.27默认为关闭,可能不用设置。
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
为了防止黑客获取服务器中PHP版本的信息,应当关闭PHP版本信息在Http头的显示。curl和telnet都不会显示PHP版本信息了。
该参数配置以下:
#第435行
expose_php = On
#修改成:
expose_php= Off
在PHP中提交的变量,包括使做POST或GET提交的变量,都将自动注为全局变量,可以直接访问,这对程序开发很是方便,但对服务器很是不安全,因此应当关闭注册全局变量。如查打开这个参数,入侵者能够经过提交一些特殊请求来绕过验证。参数register_globals默认为关闭状态,打开会很是危险
该参数配置以下:
#第435行
register_globals= Off
SQL注入是很是危险的问题,轻则网站后台被入侵,重则整个服务器沦陷。php.ini中的参数magic_quotes_gpc如查打开后会自动把用户提交的SQL查询进行转换,好比把单引号"'"转化为"\'"等,对防止SQL注入有重大做用。因此推荐把magic_quotes_gpc参数打开,默认是Off关闭的。
该参数配置以下:
#第756行
magic_quotes_gpc = Off
#修改成:
magic_quotes_gpc= On
通常状况下,PHP在没有链接到数据库或其它状况会提示错误,提示中会包含PHP脚本当前的路径信息或查询的SQL语句等信息,是不安全的,因此须要设置相关参数禁止错误提示。在服务器端使用错误日志代替。因此推荐把display_errors参数关闭,PHP5.3.27默认是Off关闭的。
该参数配置以下:
#第538行
display_errors= Off
若是必定要向客户端显示错误信息,则必定要设置好显示错误的级别,通常是只显示警告以上的信息。对应参数为error_reporting
该参数配置以下:
#第521行
error_reporting = E_ALL& ~E_DEPRECATED
#修改成:
error_reporting= E_WARNING & E_ERROR
建议在关闭display_errors参数后,可以把错误信息记录下来,便于查找服务器错误的缘由,须要将错误记录在错误日志文件中。能够打开log_errors参数,PHP5.3.27默认是On打开的。
该参数配置以下:
#第559行
log_errors= On
指定error_log的路径,PHP5.3.27默认是注释掉的。指定的错误日志记录文件必须容许apache用户和组具备写权限。
该参数配置以下:
#第646行,新增一行
error_log= /app/logs/php_errors.log
max_execution_time是设置每一个脚本运行的最长时间,能够阻止劣质脚本无休止的占用服务器资源,当没法上传较大的文件或后台备份数据常常超时,则须要调整该设置。该参数只影响脚本自己的运行时间。0表示不限制
该参数配置以下:
#第444行,默认就为30秒
max_execution_time= 30
使用memory_limit参数,必须在编译时使用--enable-memory-limit配置选项。若是要取消内存限制,则必须设置为-1。设置该参数后则memory_get_usage()函数将变为可用。
该参数配置以下:
#第465行,默认就为128M
memory_limit= 128M
max_input_time参数是指定每一个脚本解析输入数据(POST、GET、upload)的最大容许时间。-1表示不限制。
该参数配置以下:
#第454行,默认60秒
max_input_time= 60
使用upload_max_filesize参数限制上传文件的大小。可根据实际自行调整。
该参数配置以下:
#第891行,默认就为2M
upload_max_filesize= 2M
记得php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就能够利用这个控制服务器在本地执行远程的一个 php程序,例如phpshell,因此必定要关闭该参数。
该参数配置以下:
#第902行
allow_url_fopen = On
#修改成:
allow_url_fopen= Off
该参数配置以下:
#第854行
;cgi.fix_pathinfo=1
#修改成:
cgi.fix_pathinfo=0
PHP Session默认是以文件类型放在/tmp目录下的。若是是负载均衡+WEB集群的架构,则Session会话保持将会是一个问题,解决办法一是在负载均衡端使用Hash算法,将会话始终发送到一台Web服务器上;二是采用缓存服务器(Memcache、Redis)存放全部Session会话,访问时到缓存服务器上调取Session会话,达到Session会话保持的做用
该参数配置以下:
#第1461行
session.save_handler =files
#修改成:
session.save_handler= memcache
#第1490行
;session.save_path ="/tmp"
#修改成:
session.save_path= "tcp://10.0.0.18:11211" #memcache的IP和端口,采用tcp协议
a、优势
(i)读写速度会比普通files时快得多
(ii)能够解析多个服务器共用session的难题
b、缺点
(i)session数据都保持在memory中,持久化方面有所欠缺,但对session数据来讲不是问题
(ii)也可使用其它持久化系统存储session。如redis,ttserver
(iii)高性能高并发场景时,cookies的效率比session要好不少,所以,不少大网站都会用cookies来解决会话共享问题。
pm.max_children= 1024 #子进程的最大数量
pm.start_servers= 16 #启动时的进程数量
pm.min_spare_servers= 5 #最小空间进程数
pm.max_spare_servers= 20 #最大空间进程数
pm.max_requests= 2048 #扩大每一个子进程的最大请求数
slowlog= /application/php/logs/$pool.log.slow #指定慢查询的记录日志
request_slowlog_timeout= 10 #指定请求超时参数
详细设置见第二十四章第3大点PHP的fpm配置的第2小点修改php-fpm配置文件