Php配置文件:php.ini(使用‘;’表示注释)php
Php的配置项能够在配置文件中配置,也能够在脚本中使用ini_set()函数临时配置。html
语言相关配置:mysql
1. engine:设置PHP引擎是否可用,默认值为On,若设置为Off则没法使用PHP。sql
配置示例:shell
engine = On数据库
2. short_open_tag:是否容许PHP脚本使用短开放标记,将“<?php ?>”改成“<? ?>”。但这个语法与XML相同,这在某些状况下可能会致使问题,因此通常建议关闭该项。apache
配置示例:数组
short_open_tag = Off浏览器
3. asp_tags:是否支持ASP风格的脚本定界,即“<% %>”。缓存
配置示例:
asp_tags = On
4. precision:指定在浮点数表示中显示的有效数字。该项在Win32系统中设置为14,在Linux中设置为12.
配置示例:
precision = 14
5. output_buffering:设置是否使用输出缓冲,或者设置输出缓冲区的大小。使用输出缓冲会使性能稍稍降低。
配置示例:
output_buffering = 4096
output_buffering = On
6. output_handler:设置将输出返回给请求用户以前要把全部输出传递给一个函数。例如,假设你但愿将输出返回给浏览器以前先对全部输出进行压缩,能够将该项配置为PHP的压缩处理函数“ob_gzhandler”。
配置示例:
output_handler = “ob_gzhandler”
注意,不能在将output_handler设置为ob_gzhandler的同时启用zlib.output_compression。
7. zlib.output_compression:经过设置为“On”或“Off”决定是否在输出返回给浏览器之前先自动压缩,经过赋一个整数值,能够启用输出压缩,同时设置压缩缓冲区大小。
配置示例:
zlib.output_compression = Off
8. zlib.output_handler:若是zlib库不可用,zlib.output_handler将指定一个特定的压缩库。
9. implicit_flush:启用时,每次调用print()或echo(),以及完成各个嵌入的HTML块后,将自动清除或刷新其内容的输出缓冲区。当服务器须要很是长的时间来编译结果或完成某些计算时,这可能颇有用。在这些状况下,能够利用这个特性想用户输出状态更新,而不是等待服务器完成整个过程后才输出。
配置示例:
implicit_flush = Off
10. ignore_user_abort:是否设置即便在用户停止请求后也坚持完成整个请求。在执行一个长请求的时候应当考虑打开它,由于长请求可能会致使用户中途停止或浏览器超时。该配置项能够用于实现相似Unix下的crontab(定时任务计划)功能。
配置示例:
ignore_user_abort=On
11.zend.enable_gc:设置是否开启PHP的垃圾回收机制。
配置示例:
zend.enable_gc=On
安全相关配置:
1. safe_mode:是否启用安全模式。
配置示例:
safe_mode = On
打开时,PHP将检查当前脚本的拥有者是否和被操做的文件的拥有者相同,相同则容许操做,不一样则拒绝操做。开启安全模式的前提是你的目录文件权限已彻底分配正确。开启该项会减慢程序执行效率。
2. safe_mode_gid:开启时表示修改安全模式的行为,从执行前验证UID改成验证组ID。
配置示例:
safe_mode_gid = On
3. safe_mode_include_dir:指示多个路径,启动安全模式时在这些路径中将忽略安全模式。
配置示例:
safe_mode_include_dir = “/chsfc/data;/chsfc/log” (在基于UNIX的系统多个路径之间使用冒号分隔,在Windows中使用分号分隔)
4. safe_mode_env_vars:当启用安全模式时,能够只用此指令容许执行用户的脚本修改某些环境变量。能够容许修改多个变量,每一个变量之间用逗号分隔。
5. safe_mode_exec_dir:此指令指定一些目录,其中的系统程序能够经过诸如system()、exec()或passthru()等函数执行。为此必须启用安全模式。在全部操做系统中(包括Windows),都必须使用斜线(/)做为目录的分隔符。
6. safe_mode_protected_env_vars:此指令保护某些环境变量不能被putenv()函数修改。默认状况下,变量LD_LIBRARY_PATH是受保护的,由于若是在运行时修改这个变量可能导致不可预知的结果。本项中声明的全部变量都覆盖 safe_mode_allowed_env_vars指令中声明的变量。
7. open_basedir:指定容许PHP进行文件系统操做的目录,任何对这些目录之外的文件操做都会致使错误。
配置示例:
openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp"(目录之间由分号分隔)
(实际上“C:\inetpub\temp”指定的是目录前缀,“C:\inetpub\temp\”指定的才是特定的目录)
8. disable_functions:该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。
配置示例:
disable_functions = “chown,chroot”
出于安全缘由考虑,禁止使用一些特定的函数,此时若在程序中调用其中的任何一个函数都会出现Warning: ..... has been disabled for security reasons in .....
9. disable_classes:出于安全缘由,禁用特定的类。禁用多个类时,类名之间使用逗号分隔。
配置示例:
disable_classes=”vector,graph”
10. allow_url_include:PHP经过此选项控制是否容许经过include/require来执行一个远程文件。
配置示例:
allow_url_include = Off
此项配置为On存在安全漏洞:首先,远程文件可能包含可运行的PHP木马,其次,若将远程文件url做为参数传递,用户能够经过传递一个不存在的文件url来访问使得服务器报错,而后从报错信息中获得服务器的文档路径,经过必定手段获取服务器上的敏感文件。
11. allow_url_fopen:是否容许打开远程文件。
配置示例:
allow_url_fopen = Off
该项配置为On存在安全漏洞。
12. register_globals:PHP在进程启动时,会根据register_globals的设置,判断是否将$_GET、$_POST、$_COOKIE、$_ENV、$_SERVER、$REQUEST等数组变量里的内容自动注册为全局变量。
配置示例:
register_globals = Off
建议关闭该配置项,开启会增长安全漏洞的数量,并隐藏了数据的来源。若是必需要开发一个在register_globals开启的环境中布署的应用,必需要让全部变量在使用前进行初始化,当register_globals开启时,任何使用未初始化变量的行为都意味着安全漏洞。
13. enable_dl:设置是否容许使用dl()函数在脚本运行时加载PHP扩展。dl()函数仅在将PHP做为apache模块安装时才有效,在除apache之外的多线程服务器上不能正确工做。禁用dl()函数主要是出于安全考虑,由于它能够绕过open_basedir指令的限制。在安全模式下始终禁用dl()函数,而无论此处如何设置。
配置示例:
enable_dl = Off
14. cgi.force_redirect:打开cgi强制重定向为以CGI方式运行的php提供了必要的安全保护,php默认打开了该参数。
配置示例:
cgi.force_redirect=1
注意:在IIS/OmniHTTPD/Xitami上则必须关闭它!
性能相关配置:
1. realpath_cache_size:指定PHP使用的realpath(规范化的绝对路径名)缓冲区大小。在PHP打开大量文件的系统上应当增大该值以提升性能。
配置示例:
realpath_cache_size=16k
注意:这个realpath_cache_size是每一个Apache进程独占的,因此很耗内存,不能设置的太大。
2. realpath_cache_ttl:realpath缓冲区中信息的有效期(单位:秒)。对文件不多变更的系统,能够增大该值以提升性能。
配置示例:
realpath_cache_ttl=120
3. auto_globals_jit:是否仅在使用到$_SERVER和$_ENV变量时才建立(而不是在脚本一启动自动建立)。若是并未在脚本中使用这两个数组,打开该指令将会得到性能上的提高。要想该指令生效,必须关闭register_globals和register_long_arrays、register_argc_argv指令。
配置示例:
auto_globals_jit = On
错误信息相关配置:
1. log_errors:PHP错误报告日志功能开关。
配置示例:
log_errors = On // 打开PHP错误报告日志功能
2. error_log:PHP错误报告日志文件路径。
配置示例:
error_log = "D:\wamp\bin\Php7.0.9\php_errors.log"
3. error_reporting:设置PHP的报错级别。
报错级别参数列表:
E_ALL:全部的错误和警告(不包括 E_STRICT)
E_ERROR:致命性的运行时错误
E_WARNING:运行时警告(非致命性错误)
E_PARSE:编译时解析错误
E_NOTICE:运行时提醒(这些常常是你代码中的bug引发的,也多是有意的行为形成的。)
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:用户自定义的提醒消息
注意:错误报告是位字段,能够将数字加起来获得想要的错误报告等级。
配置示例:
Error_reporting = E_ALL & ~E_NOTICE // 除提示外,显示全部错误
4. display_errors:设定PHP是否将任何错误信息包含在返回给Web服务器的数据流中。
配置示例:
display_errors = On
(PHP将任何由error_reporting所定义的错误信息做为错误数据流返回给Web服务器)
5. display_startup_errors :是否打印php启动时产生的错误。
配置示例:
display_startup_errors = Off
6. html_errors:是否在出错信息中使用HTML标记。若是打开了html_errors指令,PHP将会在出错信息上显示超连接,直接连接到一个说明或者致使这个错误的函数的页面。你能够在网上下载php手册,并将docref_root指令指向你本地的手册所在的URL目录中,你还必须设置docref_ext指令来指定文件的扩展名。
注意:不要在发布的站点上使用这个特性。
配置示例:
html_errors = On
docref_root = "http://localhost/phpmanual/"
docref_ext = ".html"
7. track_errors:保存最近一个错误/警告消息于变量$php_errormsg中。$php_errormsg这个变量只在错误发生的做用域内可用,而且要求track_errors是开启的。
配置示例:
track_errors = On
8. log_errors_max_len:设置错误日志文件中每条错误消息的最大长度。
配置示例:
log_errors_max_len=1024
9. ignore_repeated_errors:是否忽略重复的错误信息。若是关闭这个参数,错误信息必须出如今同一个文件的同一行才会被忽略。
配置示例:
ignore_repeated_errors=Off
10. ignore_repeated_source:忽略重复消息时,也忽略消息的来源,重复信息将不会记录它是由不一样的文件仍是不一样的源代码产生的。
配置示例:
ignore_repeated_source=Off
11. report_memleaks:设置是否报告内存泄露信息。这个参数只在调试编译中起做用,而且必须在error_reporting中包含E_WARNING。
配置示例:
report_memleaks=On
12. error_prepend_string:错误信息以前输出的内容。
配置示例:
error_prepend_string = "<span style='color: #ff0000'>"
13. error_append_string:错误信息以后输出的内容。
配置示例:
error_append_string = "</span>"
资源限制相关配置:
1. max_execution_time:设定任何脚本所可以运行的最长时间,默认值是30秒。
配置示例:
max_execution_time = 30
2. memory_limit:PHP进程可以占用的内存,单位是M,默认值是128M。
配置示例:
memory_limit = 128M
3. max_input_nesting_level:设置输入变量的嵌套深度(例如$_GET、$_POST、$_COOKIE等)。
配置示例:
max_input_nesting_level=64
4. max_input_vars:设置输入变量的最大数量(限制分别应用于$_GET、$_POST、$_COOKIE)。
配置示例:
max_input_vars=1000
5. max_input_time:设置每一个脚本接收POST、GET及PUT等方式输入数据的最大时间限制。
配置示例:
max_input_time = 60
6. default_socket_timeout:设置socket超时时间。Socket流从建立到传输再到关闭整个过程必需要在这个参数设置的时间内完成,若是不能完成,PHP将会自动结束这个socket并返回一个警告。例如:使用file_get_contents()函数获取文件内容的时间会受到限制。
配置示例:
default_socket_timeout=60
7. pcre.backtrack_limit:PCRE的最大回溯步数限制。该参数影响非贪婪模式的正则匹配。
配置示例:
pcre.backtrack_limit=100000
注意:若是将这个值设置为一个很大的数字,可能会消耗掉全部的进程可用栈,最终致使php崩溃。
8. pcre.recursion_limit:PCRE的最大递归深度限制。
配置示例:
pcre.recursion_limit=100000
实际项目应用中,最好也对内存进行限定设置memory_limit,这样比较稳妥。
9. post_max_size:POST方法提交数据的最大大小限制。
配置示例:
post_max_size = 8M
(若PHP程序须要上传大型数据例如照片和视频文件,则应提升upload_max_filesize和post_max_size的值)
数据处理相关配置:
1. allow_calltime_pass_reference:是否强制全部参数在函数调用时都按引用传递,不推荐。建议在函数定义中指定每一个参数在函数调用时的传递方式,传值或传引用。
配置示例:
allow_calltime_pass_reference = Off
2. register_argc_argv:是否声明$argv和$argc变量。命令行运行PHP脚本格式:php php脚本路径 参数1 参数2 参数3 ... 参数n。$argv是一个数组,存储命令行参数,其中第一个元素是脚本文件路径名称。$argc保存$argv数组元素的个数。若不想使用这两个变量,应当关闭它以提升性能。
配置示例:
register_argc_argv = Off
3. request_order:设置超全局变量$_REQUEST的值。默认值为“GP”,只包含$_GET和$_POST而不包括$_COOKIE。G,P,C的前后顺序就是设置的array的覆盖顺序(后者覆盖前者)。
配置示例:
request_order = "GP"
4. variables_order:设置PHP变量解析顺序,包括$_GET,$_POST,$_COOKIE,$_ENV ,$_SERVER 数组,解析顺序从左到右,后解析新值覆盖旧值。默认设定为EGPCS(Environment,GET,POST,Cookie,Server)。
配置示例:
variables_order = "GPCS"
5. arg_separator.output:设置PHP所产生的URL中来分隔参数的分隔符,默认是“&”。
配置示例:
arg_separator.output = "&"
PHP产生URL的函数:http_build_query
6. arg_separator.input:PHP解析URL中的变量时使用的分隔符列表,默认是“&”。
配置示例:
arg_separator.input = ";&"(字符串中的任何字符都将被当作分隔符)
7. auto_prepend_file和auto_append_file:分别指定在主文件以前和以后自动解析的文件名。这些文件就像调用了include()函数被包含进来同样,所以会使用include_path指令的值。
注意:若是脚本经过exit()终止,那么自动后缀将不会发生。
8. default_mimetype和default_charset:分别设置PHP文档的MIME类型和字符集的编码
方式。这两个信息会在数据包头部字段“Content-Type”中输出。
配置示例:
default_mimetype = "text/html"
default_charset = "UTF-8"
文件上传相关配置:
1. file_uploads:是否容许HTTP文件上传。
配置示例:
file_uploads=On
2. max_file_uploads:一个请求容许上传的最大文件数量限制。
配置示例:
max_file_uploads=20
3. upload_tmp_dir:文件上传时存放文件的临时目录(必须是PHP进程用户可写的目录)。
配置示例:
upload_tmp_dir = "D:/wamp/phpfileuploadtmp"
4. upload_max_filesize:上传文件的最大大小限制。
配置示例:
upload_max_filesize = 2M
Session相关配置:
1. session.save_path:设置session文件存放的位置(文件夹应该是已经存在的)。
配置示例:
session.save_path = "D:/wamp/phpsessiontmp"
为了保证服务器的安全,最好设置为外网没法访问的目录。
2. session.save_handler:设置session数据的存取方式。默认以文件方式存取。
配置示例:
session.save_handler = files // 文件方式
session.save_handler = user // 数据库方式
3. session.use_cookies:是否使用cookies在客户端保存会话sessionid,默认为采用cookies。
配置示例:
session.use_cookies = 1
4. session.use_only_cookies:是否仅仅使用cookie在客户端保存会话sessionid,这个选项可使管理员禁止用户经过URL来传递sessionid,默认为0,若是禁用的话,客户端如果禁用cookie将使session没法工做。
配置示例:
session.use_only_cookies = 1
5. session.name:设置session名称。
配置示例:
session.name = PHPSESSID
6. session.auto_start:是否自动启动session,默认不启动。若不自动启动,每一个PHP脚本头部都须要经过session_start()函数来启动session。
配置示例:
session.auto_start = 0
7. session.cookie_lifetime:传递sessionid的cookie有效期,0表示仅在浏览器打开期间有效。
配置示例:
session.cookie_lifetime = 0
8. session.gc_probability和session.gc_divisor:定义每次初始化会话时,启动垃圾回收程序的几率。计算公式:session.gc_probability / session.gc_divisor。对会话页面访问越频繁,几率就应当越小。
配置示例:
session.gc_probability = 1
session.gc_divisor = 1000
9. session.gc_maxlifetime:设定保存的session文件生存期,超过此参数设定秒数后,保存的数据将被视为’垃圾’并由垃圾回收程序清理。若是你在session.save_path选项中设定使用子目录来存储session数据文件,垃圾回收程序不会自动启动,你必须使用本身编写的shell脚本、cron项或者其余办法来执行垃圾搜集。
配置示例:
session.gc_maxlifetime = 1440
10. session.use_trans_sid:设置当客户端禁用Cookie时,是否将sessionid以参数的形式自动附加到URL末尾。
配置示例:
session.use_trans_sid = 1
(注意:要配合session.use_only_cookies=0配置使用,不然无效)
11. session.bug_compat_42和session.bug_compat_warn:PHP4.2以前的版本有一个未注明的"特性"(也可看做bug):即便在"register_globals = Off"的状况下也容许初始化全局session变量,在4.2.3之后, 为了兼容之前的模式, PHP引入了bug_compat_42, 当启用这个选项之后(默认启用), PHP将允许自动将SESSION中的变量作为全局变量使用. 只不过若是bug_compat_warn选项开启的状况下, 会报告这个特性的被使用.
配置示例:
session.bug_compat_42 = On
session.bug_compat_warn = On
12. session.hash_bits_per_character:指定在session_id字符串中的每一个字符内保存多少位二进制数,这些二进制数是hash函数的运算结果。影响session id的长度,该值减少时session id长度增大。
配置示例:
session.hash_bits_per_character = 5
13. url_rewriter.tags:指定重写哪些HTML标签来包含session_id。(仅在"session.use_trans_sid"打开的状况下有效)form和fieldset比较特殊,若是你包含他们,URL重写器将添加一个隐藏的"<input>",它包含了本应当额外追加到URL上的信息。若是你想兼容XHTML标准,请使用"fieldset"代替"form"。
注意:全部合法的项都须要一个等号——即便后面没有值。
配置示例:
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
其余配置:
1. extension_dir:存放扩展库(模块)的目录,也就是PHP用来寻找动态链接扩展库的目录。PHP扩展库文件都存放在PHP安装目录下的ext目录下。
配置示例:
extension_dir = "D:\wamp\bin\Php7.0.9\ext"
2. extension:对于每一个须要激活的扩展,都须要一行相应的“extension=”语句来讲明PHP启动时须要加载哪些扩展。
配置示例:
配置一个文件名:
extension=php_mysqli.dll
或者配置一个路径:
extension="D:\wamp\bin\Php7.0.9\ext\php_mysqli.dll"
(若是只是配置文件名,PHP会在extension_dir配置的目录下查找)
3. date.timezone:设置时区。该设置影响PHP中全部的日期、时间函数。
配置示例:
date.timezone = Asia/Shanghai
4. doc_root:PHP页面在服务器上的根目录。
配置示例:
doc_root = "D:\wamp\www"
5. magic_quotes_gpc:PHP根据其配置决定是否将对全部GPC参数($_GET,$_POST,$_COOKIE)进行addslashes处理[既转义单引号、双引号、反斜线和nullbyte]
配置示例:
magic_quotes_gpc = On
将magic_quotes_gpc设置为On时存在性能损耗。
6. expose_php:是否隐藏PHP版本信息。
配置示例:
expose_php = Off
若将该配置项开启,服务器发出的http包头部都会包含PHP的版本信息,如:X-Powered-By:PHP/7.0.9,若关闭则不会出现。
7. user_ini.filename和user_ini.cache_ttl:user_ini.filename设置用户能够自定义的php.ini文件的名称;读取文件后会缓存起来,user_ini.cache_ttl设置从新读取的时间间隔。
配置示例:
user_ini.filename = ".user.ini"
user_ini.cache_ttl = 300
8. include_path:指定一组目录用于require(),include(),fopen_with_path()函数寻找文件。目录之间Unix下用冒号分隔,Windows用分号分隔。
配置示例:
Unix:include_path=".:/php/includes"
Windows:include_path=".;c:\php\includes"
9. sys_temp_dir:PHP用于存放临时文件的目录。
配置示例:
sys_temp_dir = "C:\Windows\TEMP"
10. cgi.nph:若是该参数打开,那么它会强制cgi对每一个http请求始终发送状态码200.
配置示例:
cgi.nph=1
11. SMTP:mail()函数中用来发送邮件的SMTP服务器的主机名或IP地址,仅用于win32.
配置示例:
SMTP=localhost
12. smtp_port:SMTP服务器的端口号,仅用于win32.
配置示例:
smtp_port=25
13. sendmail_from:发送邮件时使用的“From:”头中的邮件地址,仅用于win32。
配置示例:
sendmail_from = me@example.com
14. cgi.force_redirect:这是个在许多Web服务器中都须要被激活的目录安全功能,不设置时服务器默认开启。可是在IIS服务器中必定要把这个功能关闭,不然会致使PHP引擎在Windows中出错。
配置示例:
cgi.force_redirect = 1 // 1开启,0关闭
15. cgi.fix_pathinfo:此指令能够容许PHP听从CGI规则访问真实路径信息。IIS的FastCGI实现须要激活此指令。
配置示例:
cgi.fix_pathinfo = 1
16. Fastcgi.impersonate: IIS 下的 FastCGI 支持模拟呼叫用户方安全令牌的能力。这使得IIS能够定义请求方的安全上下文。
配置示例:
Fastcgi.impersonate = 1
17. Fastcgi.logging:FastCGI 日志在 IIS 下应被关闭。若是激活,则任何类的任何消息都被FastCGI 视为错误条件从而致使 IIS 产生 HTTP 500 错误。
配置示例:
Fastcgi.logging:FastCGI = 0