php配置文件详解(phg.ini php-fpm.conf)

#vim /etc/php.ini

[PHP]                            
#语言选项
engine = On                  #php脚本语言,使其在Apache下生效(默认是on)
short_open_tag = On   #允许tags被识别(默认是off)
asp_tags = Off              #允许ASP-style tags(默认是off)
precision = 14               #浮点数显示有效位数(默认是14)
output_buffering = 4096      #输出缓冲区大小(默认值是4096,为on是不受限制,为off是关闭),此缓冲区只对echo print等有用,cookie header 不操作
zlib.output_compression = Off    #是否启用zlib压缩,off关闭,on开启,或者特定的值,默认是4KB(默认是关闭的)
implicit_flush = Off      #强制刷新,基本是用来debug调试\
unserialize_callback_func =    #未定义的类的名字将做为参数被此函数调用
serialize_precision = -1    #在存储浮点数及双精度数时会保障存储的精度,保证不丢失数据,默认值是-1
;open_basedir =      #文件限制,每个虚拟主机只能访问自己家目录的文件 例如:open_basedir = /data/7950 
disable_functions =   #禁用某些函数,多个函数用逗号隔开(不受安全模式影响)    
disable_classes = #禁用某些类,多个类用逗号隔开(不受安全模式影响) 
;ignore_user_abort = On #终止用户请求,一般用于长时间请求,需要进行终止释放内存的时候,默认是关闭的 
;realpath_cache_size = 4096k #设置realpath缓存区大小,当打开大量文件时可以增加该值,但是与open_basedir冲突
;realpath_cache_ttl = 120 #realpath缓存文件生命周期,默认单位为s
zend.enable_gc = On   #主要是用来进行垃圾清理,释放内存(默认是on) 
expose_php = Off         #是否显示php版本信息(默认是on),为了安全着想,直接off关闭显示

max_execution_time = 30     #每个脚本执行的执行时间(默认是30秒)
max_input_time = 65             #设置每个脚本用于分析数据请求的最长时间(默认是60s,设置为-1的话,是无限制)

max_input_nesting_level = 32 #设置数组的深度(默认是注释的,且值为64)(优化)
max_input_vars = 5000            #php最大提交表单(控件)数(默认是注释的,且值为1000)(优化)
memory_limit = 128M               #设置脚本运行最大消耗的内存(默认是128M)

#php脚本运行错误信息设置
error_reporting = E_ALL & ~E_NOTICE #设置php代码运行后,出现报错的错误级别,默认值是:E_ALL & ~E_DEPRECATED & ~E_STRICT(除了后面2种级别都报,我们这个设置是除了提醒级别都报)这里的错误是广义的错误,包括E_NOTICE注意、E_WARNING警告、E_ERROR致命错误等
display_errors = Off                #是否将错误信息作为输出一部分打印在屏幕,在生产环境建议关闭,测试环境建议打开(默认是off)
display_startup_errors = Off  #也是错误信息显示的问题,主要用来调试,除了用于调试,其他时间都应该设置为off(默认是off)
log_errors = On                       #是否将php程序运行错误信息的记录到error_log中(默认是on)
log_errors_max_len = 1024  #设置日志最大长度默认是1024,为0时不允许任何长度
ignore_repeated_errors = Off  #是否记录重复的错误,也就是上下行挨着的那种,默认是off
ignore_repeated_source = Off  #忽略重复错误的时候,是否忽略错误源头,默认是off

report_memleaks = On #是否报告内存泄露信息,仅在调试编译中有效,默认是on
;track_errors = Off #指令已弃用 是否将最后的错误存储在$php-errormsg中,默认off
html_errors = On #是否将错误消息转换为html格式,便于阅读,默认为on,生产环境建议关闭
;docref_root = "/phpmanual/"   #跟html_errors联合起来使用,可以生成一个错误信息文件,点击即可阅读,后面文件名自定义
;docref_ext = .html #我也不知道是啥玩意
;error_prepend_string = "<span style='color: #ff0000'>"  #设置错误日志输出之前的字符串信息,默认是空
;error_append_string = "</span>" #设置错误日志输出之后的字符串信息,默认空
;error_log = syslog #将错误日志记录到哪个文件,并且此文件对web用户是可写的,默认是为空,syslog是记录到系统错误日志
;syslog.ident = php  #只有设置error_log = syslog时,此设置才生效,意思是将后面的值变成一个字符串进行记录
;syslog.facility = user #记录程序类型信息,只有将error_log = syslog才生效
;syslog.filter = ascii #禁用过滤字符 ascii是可打印的acll字符和NL字符  no-ctrl除控制字符之外的所有字符 all  全部 raw 
error_log = /tmp/phperror.log    #设定当前错误信息记录日志路劲
还有很多错误信息的定义请参考此文档:https://www.php.net/manual/zh/errorfunc.configuration.php

;常见错误:
; E_ALL-所有错误和警告(自PHP 5.4.0起包括E_STRICT)
; E_ERROR-致命错误
; E_RECOVERABLE_ERROR-无限接近致命错误的错误
; E_WARNING-警告(非致命错误)
; E_PARSE-编译时解析错误
; E_NOTICE-运行时通知(这些警告通常会导致 E_STRICT-运行时通知,允许PHP建议更改您的代码,这将确保最佳的互操作性
并向前兼容您的代码
; E_CORE_ERROR-PHP初始启动期间发生的致命错误
; E_CORE_WARNING-PHP期间发生的警告(非致命错误)
初次启动
; E_COMPILE_ERROR-致命的编译时错误
; E_COMPILE_WARNING-编译时警告(非致命错误)
; E_USER_ERROR-用户生成的错误消息
; E_USER_WARNING-用户生成的警告消息
; E_USER_NOTICE-用户生成的通知消息
; E_DEPRECATED-警告在将来的版本中将无法使用的代码
PHP
; E_USER_DEPRECATED-用户生成的弃用警告
;
通用方案
; E_ALL(显示所有错误,警告和注意事项,包括编码标准。)
; E_ALL和〜E_NOTICE(显示所有错误,除非另行通知)
; E_ALL和〜E_NOTICE和〜E_STRICT(显示所有错误,但声明和编码标准警告除外。)
; E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR(仅显示错误)

文件处理
;arg_separator.output = "&amp; #分隔符 通过此分隔符可以指定RUL以什么样的方式形成
;arg_separator.input = ";&"  #这个也是分隔符的意思 应该是读取RUL &代表任何字符都是分隔符
variables_order = "GPCS"     #描述了php记录,GPCES是环境变量GET, POST, Cookie, ENV和SERVER的缩写,ENV的话好像是收费的(默认是GPCS),按从左到右记录,新值取代旧值。 
request_order = "GP"            #将哪些环境变量设置为全局变量(默认值是GP)
;
register_argc_argv = Off       #是否声明argv和argc变量(没有需求的话关闭此项可以提供性能,默认值是开的)
auto_globals_jit = On            #为on的话,$_SERVER变量和$_ENV变量不会在脚本启动时就创建,而是会在第一次使用$SERVER和$ENV时才会创建。关闭的话可以提升性能(默认为on)
;enable_post_data_reading = Off   #是否允许客户端以post方法读取数据,默认是off
post_max_size = 8M              #php可以接受post数据的最大值(默认是8M);
default_mimetype = "text/html"  #默认输出媒体类型
default_charset = "UTF-8"        #默认字符集为utf-8(默认值)
;internal_encoding =      #设置php内部字符集编码,为空的话,则使用上面的默认字符集
;input_encoding =         #输入字符集编码,为空的话,则使用默认字符集
;output_encoding =     #输出字符集编码,为空的话,则使用默认字符集

路劲和目录

doc_root =  #指定php根目录,跟Nginx一起使用的时候,不需要指定此路劲,其他用途就不知道了
user_dir =  #没有怎么搞懂,跳过
;extension_dir = "./"  #指定扩展模块的位置
;sys_temp_dir = "/tmp"  #放置临时问津的目录

enable_dl = Off                    #是否启用dl函数(默认是off,没有启用)
;cgi.force_redirect = 1  #提供php安全连接cgi接口,默认是开启的,为1是关闭此功能
;cgi.nph = 1   #是否启用 cgi.nph功能,默认是关闭的,1为开启,开启此功能时,会要求cgi在处理每一个请求时,发送一个200状态码
;cgi.redirect_status_env = #设置环境变量的,在Nginx,Apache下的不用管
;cgi.fix_pathinfo=1  #是否为cgi提供*real*path_info/path_翻译支持,默认是1,为关闭的
;cgi.discard_path=1 #也是提供安全的,主要是针对php cgi二进制文件,启用此参数,也会很麻烦
;fastcgi.impersonate = 1  #针对IIS的,提供安全令牌的功能
;fastcgi.logging = 0  #关闭fastcgi连接日志,默认是关闭的
;cgi.rfc2616_headers = 0  # 主要是告诉php发送http响应信息,应该返回哪些header信息,0为标准的http状态信息,1是为rfc616标准定义的header信息

#文件上传
file_uploads = On                 #是否允许http文件上传(默认为on)
upload_max_filesize = 8M   #上传文件最大大小(默认值是2M)
max_file_uploads = 20         #单个请求可以进行文件上传的最大个数(默认值是20)


#Fopen 包装
allow_url_fopen = On           #是否将url视为文件(http: ftp: )
allow_url_include = Off        #是否将远程的url(httpd: ftp:)文件作为一个php程序来执行
default_socket_timeout = 60        #设置socket流的超时参数(默认是60秒),也就是socket流从建立到传输再到关闭整个过程必须要在这个参数设置的时间以内完成,如果不能完成,那么PHP将自动结束这个socket并返回一个警告。
;auto_detect_line_endings = Off  #启用此功能,文件无论是来自Windows,mac等系统,都进行处理,忽略来源,默认关闭


#动态扩展
extension=modulename #后面接模块名字,支持自动加载某个模块
例如: 
extension=bz2
extension=curl

extension_dir = "/opt/app/php56/lib/php/extensions/no-debug-non-zts-20131226/"    #指定扩展模块所在目录(由于php版本的不同,指向的扩展目录不同,那怎么找到正确的扩展目录了? 先 cd 到安装 php的lib/php目录下 ,然后ls 就可以找到默认的扩展模块目录


#模块设置
[CLI Server]
cli_server.color = On #指定在web终端输出是否启用颜色编码,简单来说输出是否可以上色

[Date]
zend_extension=opcache.so        #指定zend引擎(配置文件默认是没有的)

date.timezone = Asia/Shanghai    #设置默认时区(默认是没有设置的,需要用户自行设置)
[filter]
;filter.default = unsafe_raw
;filter.default_flags =

[intl]
;intl.use_exceptions = 0  #在init函数运行是产生错误,是否要记录,0为不记录
[sqlite3] #用于安全防御的
;sqlite3.extension_dir =  #接sqlite3文件目录,代表加载sqlite3文件,默认为空
;sqlite3.defensive = 1 #主要针对可以对数据库文件造成破坏的sql语句,启用时,将禁止这些sql可以对数据库文件进行写操作,仅适用于仅适用于sqlite 3.26+及以上版本
[Pcre]  #针对pcre库的限制
;pcre.backtrack_limit=100000  #溯源限制,具体值也没有搞懂
;pcre.recursion_limit=100000 #递归限制
;pcre.jit=1 #是否支持JIT编译,默认为1
[ODBC]
odbc.allow_persistent = On #是否允许持久连接,默认是允许
odbc.check_persistent = On #重新连接之前,是否检查当前连接可用,默认为on
odbc.max_persistent = -1  #持久化连接最大连接数,-1无限制
odbc.max_links = -1 #允许最大连接数(持久+非持久),-1表示无限制,一般Nginx那一层面已经实现了此功能
odbc.defaultlrl = 4096 #长字段处理 0为略过*
odbc.defaultbinmode = 1 #对二进制数据处理方式 0 略过 1按照实际返回 2替换到字符
[Interbase] #针对ibase数据库的操作
ibase.allow_persistent = 1  #是否允许持久化连接,默认是允许
ibase.max_persistent = -1  #持久连接最大连接数 -1无限制
ibase.max_links = -1  #最大连接数(持久+非持久) -1 无限制
;ibase.default_db =  #数据库名
;ibase.default_user = #用户
;ibase.default_password = #密码
;ibase.default_charset = #默认字符集
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"  #默认时间戳
ibase.dateformat = "%Y-%m-%d"  #年月日
ibase.timeformat = "%H:%M:%S" #小时,分钟,秒
[MySQLi] #针对mysql数据库
mysqli.max_persistent = -1 #最大持久化连接数,-1 无限制
mysqli.allow_persistent = On #是否允许持久化连接 默认允许
mysqli.max_links = -1 #最大连接数 -1 无限制
mysqli.default_port = 3306 #默认端口,如果mysql的端口不是默认端口就得修改此端口
mysqli.default_socket = #是否使用socket连接,默认为空,使用mysql内建默认值
mysqli.default_host = #为空即可
mysqli.default_user =  #为空即可
mysqli.default_pw = #为空即可(同时在安全模式下也会生效,并且这里填写密码的话,也是明文密码,谁都可以看,不安全)
mysqli.reconnect = Off #是否进行重新连接(php自动发起的连接),默认是关闭的

[mysqlnd]  #是遵循开源协议的一个函数库,通过mysqlnd可以极大提升php访问mysql性能,5.3.0版本才被加入
mysqlnd.collect_statistics = On  #是否对MySQL常规信息进行统计,默认是开启的
mysqlnd.collect_memory_statistics = Off  #是否对MySQL内存使用情况进行统计 默认是off
;mysqlnd.log_mask = 0 #指定哪些查询信息被记录,默认不记录
;mysqlnd.mempool_default_size = 16000 #指定mysqlnd内存池大小,可以自定义
;mysqlnd.net_cmd_buffer_size = 2048 #指定缓冲区大小,用于存放向mysql发送的命令,也就是预先分配存储mysql指令的空间(单位:字节)
;mysqlnd.net_read_buffer_size = 32768 #指定存储服务器数据(是值服务器即将要发送的数据)缓冲区大小,单位:字节
;mysqlnd.net_read_timeout = 31536000 #连接超时时间(以s为单位)
;mysqlnd.sha256_server_public_key = #与sha256验证有关,后面接的是rsa公钥文件
[OCI8] #连接oracle数据库的操作,先跳过了(我这边环境没有oracle数据库)
[PostgreSQL] #连接postgresql数据库的操作,我这边环境基本是MySQL就先跳过了,反正有这么个东西就行,有需求在来看a
[Session]           #安全选项

session.save_handler = files    #用于存储/检索数据的处理程序
session.save_path = "/tmp/phpsession"      #存储数据的路劲(是将参数传给上面那个参数用的)
例如:
;session.save_handler = memcache
;session.save_path = tcp://10.0.10.20:10007

session.use_strict_mode = 0    #会话安全管理(0,为严格会话模式,严格会话模式不接受未初始化的会话ID并重新生成会话;1,只使用服务端自己生成的session id,不使用用户客户端生成的session id)
session.use_cookies = 1            #是否支持cookie存放会话功能(默认是1 支持)
session.use_only_cookies = 1    #指定是否在客户端仅仅使用 cookie 来存放会话 ID。。启用此设定可以防止有关通过 URL 传递会话 ID 的攻击。自PHP 5.3.0开始,默认值为1(启用)
session.name = PHPSESSID        #指定会话名以用做 cookie 的名字。只能由字母数字组成,默认为 PHPSESSID
session.auto_start = 0                 #指定会话模块是否在请求开始时自动启动一个会话。默认为 0(不启动)
session.cookie_lifetime = 0        #指定了浏览器接收cookie的会话周期,0的话直到关闭浏览器(默认值为0)
session.cookie_path = /              #指定会话cookie的路劲(默认为/)
session.cookie_domain =           #指定会话cookie的域名(默认为空)
session.cookie_httponly =          #此参数意思就是说对cookie进行标记,只能通过http协议访问也就是不能通过其他脚本语言访问(javascript),设置此参数可以减少身份的盗用(默认为空)。
session.serialize_handler = php    #定义序列化和反序列化的处理器的名字,默认是php
session.gc_probability = 1        #跟下面那个参数联合起来管理gc(垃圾回收)进程启动的概率(默认是为1)
session.gc_divisor = 1000        #同上,概率计算:gc_probabilit/gc_divisor 也就是每条请求运行gc的机会只有0.1%,主要用于大批量生产服务器(主要用session的回收)
session.gc_maxlifetime = 1440    #在经过多少s之后,session数据将被视为垃圾,通过gc程序进行回收。在session启动的时候就开始计算时间(如果被上面2个参数产生的gc程序给干掉了就不计算了,默认值是1440)
session.referer_check =  #一般是为空,选择默认即可
session.cache_limiter = nocache    #指定缓冲session会话的方法(有5个值:(none/nocache/private/private_no_expire/public),默认为 nocache。https://www.php.net/manual/zh/function.session-cache-limiter.php 官方文档对这里介绍比较详细
session.cache_expire = 180        #指在缓冲池里面session会话的生存周期,默认是180.此设定对 nocache 缓冲控制方法无效。
session.use_trans_sid = 0         #默认是0(禁用的,在7.10版本之前启用此选项会带来一些不安全的因素)
session.sid_length = 26  #设置会话id的长度,在22-256之间,一般建议设置32及以上

session.trans_sid_tags = "a=href,area=href,frame=src,form="  #定义URL重新规则,选择默认即可
;session.trans_sid_hosts="" #此值是启用绝对路劲重新,就必须定义目标主机,例如:php.net,www.php.net,wiki.php.net 默认是空
session.hash_function = 0        #选择生成会话的hash函数(0 MD5 128位,1 SHA 160位)
session.hash_bits_per_character = 5  #进行转换时,每个字符存储多少位(设置默认值为5,根据默认的设置即可)
;session.upload_progress.enabled = On #进行session数据存储时是否进行进度跟踪(也就是post方法上传数据)
;session.upload_progress.cleanup = On #post上传数据完成后是否立即清除进度信息
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" #选择默认值即可,指定session索引名称
;session.upload_progress.freq =  "1%" #上传进度多久更新一次
;session.upload_progress.min_freq = "1" #上传进度更新时间差,1s一次,也就是每1秒只能更新一次进度
;session.lazy_write = On #设置此值为on时,只有在更改会话数据时才能写入数据,其他情况下不能写入数据(没有怎么搞懂)
[mbstring] #是用来处理多字节字符串,反正对php来说很重要(是个扩展,需要单独安装的)
;mbstring.language = Japanese #内部字符表示语言
;mbstring.internal_encoding = #内部脚本编码,具体有啥去看官网
;mbstring.http_input = #指定HTTP输入编码
;mbstring.encoding_translation = Off #是否启用编码转换功能,为on时,输入字符都被转换为内部编码
;mbstring.detect_order = auto #自动进行编码检测
;mbstring.substitute_character = none #当无法将字符转换成功时,直接使用的置换符号
;mbstring.func_overload = 0 #使用mbsring函数进行替换时,是否覆盖 有4个值:0 不覆盖 1 覆盖mail函数 2 覆盖str函数 4 覆盖 ereg函数
;mbstring.strict_detection = On #是否进程严格编码检测
;mbstring.http_output_conv_mimetype=  #是否激活mb_output_handler内容类型的正则
;mbstring.regex_stack_limit=100000 #为mbstring提供最大堆栈深度
官方文档:https://www.php.net/manual/zh/book.mbstring.php 感兴趣的可以了解一下
[gd] #对GD图像的设置
;gd.jpeg_ignore_warning = 1 #告诉jpeg解码器忽略警告并且继续创建GD图像,0,关闭此功能,1为开启此功能
[exif] #也是一个扩展模块,主要是进行图片信息获取 下面的选择默认就行了,启用此功能得先安装此模块
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_intel    = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel    = JIS
官方文档:
https://www.php.net/manual/zh/book.exif.php
 [Tidy] #也是一个扩展模块,主要功能是让你php生成的html文件更整洁,更干净,针对开发 
;tidy.default_config = /usr/local/lib/php/default.tcfg #指定你tidy的文件路劲
tidy.clean_output = Off   #是否在生成html的时候启动修复及清除操作,建议关闭我
[soap]  #用于实现php与web server进行数据交换的协议,通过soap,php能更好的配合web server为用户服务
soap.wsdl_cache_enabled=1 #是否启用wsdl缓存功能,默认是启用的
soap.wsdl_cache_dir="/tmp" #设置存放缓冲文件的目录
soap.wsdl_cache_ttl=86400 #缓存文件存活时间(单位s)
soap.wsdl_cache_limit = 5 #指定缓存文件(wsdl文件)最大数量
[sysvshm]
;sysvshm.init_mem = 10000  #指定默认共享内存大小
[ldap] #是轻量级的目录访问协议,属于扩展模块,启用此功能需要安装此模块
ldap.max_links = -1 #指定最大连接数,-1无限制

[opcache]
opcache.enable=1                #是否启用opcache加速(PHP的解析器是Zend,PHP使用Zend引擎,中间码我们也称作为操作码,OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。(0为不开启,1位开启)
opcache.enable_cli=0          #在CLi环境下,php是否启用opcache(默认是0,不开启的,1是开启的)
opcache.memory_consumption=128    #opcache共享内存存储单位大小,单位MB
opcache.interned_strings_buffer=4      #默认是为4M,在访问量大的时候,可以有效的节约内存,提高性能(字符串驻留)。
opcache.max_accelerated_files=2000  #设置内存最多可以存储多少个php文件(这个值设置最好大于所有PHP文件的总和)
opcache.max_wasted_percentage=5    #内存浪费达到此值的百分比时候,会重启调度
opcache.use_cwd=1     #开启这条指令, Zend Optimizer + 会自动将当前工作目录的名字追加到脚本键上,但是会牺牲性能。
opcache.validate_timestamps=1           #开启文件时间戳验证
opcache.revalidate_freq=2                     #多久检查一次文件的更新时间,单位s ,建议60s
opcache.revalidate_path=1                    #是否允许在 include_path 中进行文件搜索的优化(0为禁止,1为允许)
opcache.save_comments=0     #如果禁用,则会从代码中删除所有PHPDoc注释,以减小优化代码的大小。(0为禁止,1为允许)
opcache.load_comments=0                #是否加载文件/函数的注释。(0为禁止,1为允许)
opcache.fast_shutdown=0                  #如果启用,则将快速关闭序列,加速代码
opcache.enable_file_override=0        #是否允许覆盖文件存在(file_exists等)的优化特性。

[userconfig](自定义变量,可以通过此设置,php代码能读取php.ini的配置)
environment = TEST
custom_env = dev


# vim  php-fpm.conf

[global]                            #全局设置
pid = run/php-fpm.pid    #指定pid
error_log = /data/logs/php/php-fpm.err    #指定错误日志
log_level = notice        #设置日志记录级别
#syslog.facility = daemon   #将日志写进系统日志(还是单独的日志便于分析)
#syslog.ident = php-fpm      #系统日志标识,当fpm进程过多的时候,需要用这个区分日志是谁的

#emergency_restart_threshold = 0    
#emergency_restart_interval = 0 

#表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值(看他们写的文档默认时间都是60)。

#process_control_timeout = 0   #设置子进程接受主进程复用信号的超时时间,默认值位0
#process.max = 128   #当php-fpm进程动态管理子进程,fpm最多能fork多少个进程(0,表示无限制,这是所有进程能起到子进程的总和,悠着点使用) 
#process.priority = -19 #设置子进程的优先级,在master以root用户启动时候有效,不设置的话,子进程会进程master进程的优先级。

#daemonize = yes        #设置为no,用于bug调试,默认是yes
#rlimit_files = 1024      #设置master进程最多能打开多少文件
#rlimit_core = 0           #master进程核心rlimit限制值;可选unlimited或>=0的整数,默认为系统的值。
#events.mechanism = epoll    #事件处理机制,默认自动检测,可选值:select,poll,epoll(linux>=2.5.44),kqueue,/dev/poll,port
#systemd_interval = 10s  #当fpm被设置为系统服务时,多久向服务器报告一次状态,单位有s,m,h。

#自定义进程池是没有限制的,只要监听端口(重点是监听端口不同即可)及管理选项不同即可
[www]            #设置进程池(名字自定义)
listen = /tmp/php-cgi.sock      #监听端口(可以是sock也可以是ip加端口)
listen.backlog = 8192              #连接队列的限制,-1是无限制,建议是1024,2的幂值
listen.allowed_clients = 127.0.0.1     #允许连接fpm的地址,多个地址用逗号隔开,不配值的话啥地址都可以来连接

listen.owner = www        
listen.group = www        
listen.mode = 0666        

#用socket连接方式时,指定拥有unix socket权限的用户,默认和运行的用户一样;用tcp连接可以注释掉 

user = www
group = www

#以什么用户来允许fpm池

pm = static        #启动子进程的方式(static,启动时创建指定个数的子进程;dynamic,根据实际情况创建,至少会有一个;ondemand,启动时不创建,有需求在创建)
pm.max_children = 40   #该池同时最多存在几个进程,无论以上面那种方法启动子进程都要配置
pm.start_servers = 20    #fpm启动时创建多少个子进程,只适用动态dynamic管理
pm.min_spare_servers = 10    #服务器闲置时最少要有几个进程存在,少了就创建,也只适合动态dynamic管理
pm.max_spare_servers = 40   #服务器闲置时,最多只能存在多少个子进程,多了就kill,也只适合动态dynamic管理
request_terminate_timeout = 300   #单个请求的超时时间,有时候php.ini设置的最大执行时间未生效,这个就会来干掉那个执行太久的请求。
request_slowlog_timeout = 10   #超过这个运行时间就会写慢日志
slowlog = /data/logs/php/phpslow.log   #慢日志存放位置

其他一些参数:
#pm.process_idle_timeout = 10s      #子进程闲置10s后就会被杀掉。
#pm.max_requests = 500                   #每个子进程最大处理500请求就被回收,可防止内存泄露。
#pm.status_path string                      #FPM 状态页面的网址。如果没有设置,则无法访问状态页面,默认值:无。
更多的参考php-fpm.conf.default文件


 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java的`KeyFactory`和`PKCS8EncodedKeySpec`类来将PKCS#1格式的私钥字符串转换成`PrivateKey`对象。但是,PKCS#1格式的私钥字符串通常是经过BASE64编码的,因此要先将其解码成字节数组,再进行转换。 下面是一个示例代码: ```java import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; public class PKCS1ToPrivateKey { public static void main(String[] args) throws Exception { String pkcs1PrivateKeyStr = "-----BEGIN RSA PRIVATE KEY-----\n" + "MIICXQIBAAKBgQDnKNa7wEgVXoTjHj0jx4Pzq5wSdEoR0R6vOzr5g4VxQX6KpJ+t\n" + "yMwXGcJ4yQRc9z3fVZnJ+T8o8AVwGZ8gM1w7mZmZnJcRjYcqm+UxZtMq3iHjtmW\n" + "Aq1O5H3CfZ1/DfT8PHG8i2YhL2jYaS38NnT5oDQXjrr9vZZ5yX0+tJfG8QIDAQAB\n" + "AoGBAJvhnW1I0P6zJw+0N2WJz3MjZB0EzX7yM0Ou+5KgJ2+7z8S5nQ1U4tY6P4Hc\n" + "/hs2G6cpjYX0LdNQlq94qV4eS1nU9WtTbYnYxXJmZ/wg3dE4xVXjJpKQ3nAQCc3D\n" + "2GyGzN5KUO7tJpJXUZVXlIqOY1QzvSgPj2OzXa1wYJX4KmXNwWb6Lh0gPz8A3/Py\n" + "bT4N3tz6VlMw5KU8AkEA65K7gqZ0KoZk3Kt4xqzN0GX3QdCq3P9a5HlbFxl+7Jm\n" + "fP4Vv8xV2w5wRZ3lSPhDf0Z2ttoUOaYDxqBZUQp+cLjQJBAOQYdL7fLgVz7jQK2U\n" + "ZGpYzBpS7Rz2JXx2LQg/xB2LsZ8/r4aRTwU9A5K/64CQz0RQxhX2zvJxwzvtf7Rz\n" + "48PfEY0CQQC5EzZPo5NnM4vKj7w0O0ZpZ7WmYPaX+5jKo/9qEKEHVm1b5SUoVQ5U\n" + "aGc9YR1BqQeX4m4DXdFbT3mk6iB7bt4TAkB8gOQ1OghuK3VbqHt4Jg5J7/6tJ5pF\n" + "e8+oF5XqzZdGkc1T6U/6Cw6i+XtuK2zjL1mXcoU5lWbJ8v7PbVz5iMvZAkA+ylRf\n" + "C6p5NfE4Y/jXDY1h5NlI3q7WZm6y/41CgJ1OzP9Ni1CjSKyLgUQ3woG0wS7JG87c\n" + "4kYhY2REzLDM1JQJBAI7YX7x1vKvJyFw1JzgL0oIaZ4KK5k1Gd2WQqBmVZkT9Y9Y\n" + "g3s7N8x9me4g7zG1yTXJ+ZoFv4tqVlA9yF4=\n" + "-----END RSA PRIVATE KEY-----"; // 去掉头尾部分,只保留私钥内容 pkcs1PrivateKeyStr = pkcs1PrivateKeyStr.replace("-----BEGIN RSA PRIVATE KEY-----\n", ""); pkcs1PrivateKeyStr = pkcs1PrivateKeyStr.replace("-----END RSA PRIVATE KEY-----", ""); // 将BASE64编码的私钥字符串解码成字节数组 byte[] pkcs1PrivateKeyBytes = Base64.getDecoder().decode(pkcs1PrivateKeyStr); // 将PKCS#1格式的私钥字节数组转换成PrivateKey对象 PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(pkcs1PrivateKeyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); // 输出PrivateKey对象 System.out.println(privateKey); } } ``` 注意,上述代码中的私钥只用于示例,不要在实际应用中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值