php.ini配置详解(1)

来源:互联网 发布:华元宠物用品淘宝真假 编辑:程序博客网 时间:2024/06/05 09:39


;************************以下这部分是php.ini-recommended中的内容*****************************   
  *******************************************************************************************   
  ;[
php   5.0.4   php.ini-recommended
]   
  ;;;;;;;;;;;;;;;;;   
  ;;
关于这个文件   
;;   
  ;;;;;;;;;;;;;;;;;   
  ;   
这个版本是推荐使用的、PHP5风格的php.
ini版本。   
  
;   
这个版本使用了一些非标准设置,目的是使PHP更加高效、安全,鼓励更加整洁的代码   
  
;   
代价是可能与某些程序不兼容,并给开发带来难度。我们鼓励在正式发布网站时使用这个配置。   
  
;   
所有与默认不同的设置都有明显的注明,你可以决定是否使用与默认不同的设置。   
  
;   有关php.ini的普通说明请参考php安装文件夹下的php.ini-
dist文件。   
  
;   这个文件和php.ini-
dist不同,有些参数的设置改变了,这样做是为了提高性能和保障安全。   
  
;   
请确认你阅读了不同之处,并且修改过你的脚本,再采用这个版本的配置文件。   
  
;-----------------------------------------------------------------   
  ;->   
register_globals   =   Off                   [安全,性能
]   
  ;   
不再为输入数据注册全局变量(POST,   GET,   cookies,   环境变量,   服务器变量
)   
  ;   
不要使用$foo,而要使用$_REQUEST["foo"](包含任何通过请求传送的数据,即:POST,   GET,   cookies,   环境变量,   
服务器变量

),   
  ;   
或使用指定的$_GET["foo"],   $_POST["foo"],   $_COOKIE["foo"],   $_FILES["foo"](不包含在$_REQUEST数组中),   
这取决于请求

来自何处。   
  
;   同时,你可以查看import_request_variables()
函数(将   GET/POST/Cookie   变量导入到全局作用域中)。   
  
;   注意,register_globals将在下一个版本中被废除(默认关闭)
,因为它总是带来太多的安全问题。   
  
;   请参考   [url]http:
//php.net/manual/en/security.registerglobals.php[/url]   以获得更多信息。   
  
;   
  ;->   
register_long_arrays   =   Off           [性能
]   
  ;   
禁用旧式的长式预定义数组($HTTP_*_VARS)
,取而代之以短式预定义超全局数组。   
  
;   
  ;->   
display_errors   =   Off                       [安全
]   
  ;   
关闭这个特性,脚本执行期间的错误/
警告将不会显示输出,这样就不会将敏感信息暴露给远端用户。   
  
;   一些错误/
警告信息会暴露可能被攻击者利用的脚本信息、服务器信息、数据库信息。   
  
;   
正式发布网站时应当关闭这个特性。   
  
;   
  ;->   
log_errors   =   On                                 [安全
]   
  ;   
这个指令是上一个指令的补充。   
  
;   脚本执行期间的错误将被记录到日志文件中(比如系统日志)
,可以有几种不同的配置方法。   
  
;   配合将"display_errors"
关闭,这个设置可以让你明白那里出了问题,而不会暴露任何敏感信息给远端用户。   
  
;   
  ;->   
output_buffering   =   4096                 [性能
]   
  ;   
设置一个4K的输出缓冲。请用输出缓存可以减少写入动作,有时还能减少传输数据包的大小,这些都有助于提高性能。   
  
;   
这个参数的实际收益取很大程度上取决于你使用的是什么Web服务器,使用的是什么样的脚本。   
  
;   
  ;->   
register_argc_argv   =   Off               [性能
]   
  ;   
禁止注册有些多余的$argv和$argc全局变量   
  
;   
  ;->   
magic_quotes_gpc   =   Off                   [性能
]   
  ;   
不将输入的数据用反斜杠进行转义,以便发送给数据库时不需要更多的处理。   
  
;   事实上,你应该对每一个发送到数据库的输入数据使用addslashes()
函数。   
  
;   
  ;->   
variables_order   =   "GPCS"               [性能
]   
  ;   
使得$_ENV数组中的环境变量不再杂乱无章。   
  
;   你应当使用getenv()
函数存取环境变量。   
  
;   
  ;->   
error_reporting   =   E_ALL                 [代码清洁,安全
(?)]   
  ;   
默认情况下,PHP错误报告等级是E_NOTICE   
  
;   E_ALL表示报告所有非致命错误,因为这些错误可能会导致大问题(比如使用了未定义的变量)
。   
  
;   
  ;->   
allow_call_time_pass_reference   =   Off           [代码清洁
]   
  ;   
禁止默认将函数的参数按引用传递。   
  
;   PHP4/5风格的处理办法是在函数声明时指定按引用传递。

 

;**************以下这部分是php.ini-dist的内容,但是包含了与php.ini-recommended的不同之处********   
  **********************************************************************************************   
  [
PHP   5.0.4   php.ini-dist]   
    
  ;;;;;;;;;;   
  ;;   
警告   ;;   
  ;;;;;;;;;;   
  ;   
这是PHP新安装时的默认设置。默认设置适合于开发但是不适合正式应用。   
  
;   出于安全方面考虑,请在发布正式应用程序时使用php.ini-recommended   
  
;   并且参考如下页面:[url]http://php.net/manual/en/security.php[/url]   
    
    
  
;;;;;;;;;;;;;;;;;;;   
  ;;   
关于   php.ini     ;;   
  ;;;;;;;;;;;;;;;;;;;   
  ;   
这个文件控制了PHP许多方面的性能和行为。   为了让PHP正确读取这个文件,   
  
;   它必须被命名为'php.ini'。PHP将按照如下顺序依次查找该文件:   
  
;   1.当前工作目录;2.环境变量PHPRC指明的路径;3.编译时指定的路径。   
  
;   在windows下,编译时的路径是Windows的安装目录(C:WINDOWS等)。   
  
;   在命令行模式下,php.ini的查找路径可以用   -c   参数指定。   
  
;   
  ;   
该文件的语法非常简单。空白字符("   ","/t",...)和用分号(";")开始的行被简单地忽略。   
  
;   章节标题(例如   :   [php])也被简单地忽略,即使将来它们可能有某种意义。   
  
;   
  ;   
设置格式如下:   
  
;   directive   =   value   
  
;   指令标识符(directive)   是大小写敏感的!   "foo=bar"   不同于   "FOO   =   bar"。   
  
;   (value)可以是:   
  
;   1.一个字符串、2.一个数字、3.一个   PHP常量(如:E_ALL,   M_PI)、   
  
;   4.一个INI常量(On,   Off,   True,   False,   Yes,   No,   None)、   
  
;   5.一个表达式(如:E_ALL   &   ~E_NOTICE)、   
  
;   6.用引号括起来的字符串("foo").   
  ;   
  ;   
INI文件中的表达式仅限于使用位运算符/逻辑非/小括号。   
  
;   |   位或   
  
;   &   位与   
  
;   ~   位非   
  
;   !   逻辑非   
  
;   
  ;   
布尔标志可用   1,   On,   True,   Yes   打开,亦可用   0,   Off,   False,   No   关闭。   
  
;   
  ;   
一个空字符串可以用在等号后不写任何东西表示,或者用   none   关键字,举例如下:   
  
;   foo   将foo置为空字符串   
  
;   foo   =   none 将foo置为空字符串   
  
;   foo   =   "none" 将foo置为字符串'none'   
  
;   
  ;   
如果你在值设置中使用常量,而这些常量属于动态扩展(PHP扩展或Zend扩展)   
  
;   那么你只能在调入这些动态扩展的行之后使用这些常量。   
  
;   
  ;   
所有在   php.ini-dist   文件里设定的值与内建的默认值相同。   
  
;   也就是说,如果   php.ini   不存在,或者你删掉了某些行,默认值与之相同。   
    
  ;;;;;;;;;;;;;;;   
  ;;;   
语言选项   ;;   
  ;;;;;;;;;;;;;;;   
    
  
engine   =   On   
  
;   使PHP脚本语言引擎在Apache下有效。   
    
  zend
.ze1_compatibility_mode   =   Off   
  
;   允许使用兼容Zend引擎1(PHP   4.x)的模式   
    
  short_open_tag   
=   On   
  
;   允许   "<?...?>"   短标识,否则只有"<?php...?>""<script>...</script>"才能被识别。   
  
;   注意:除非你的php程序只供自己使用,否则请不要使用短标记。   
  
;   如果要和XML结合使用PHP,你可以选择禁用此选项以方便直接嵌入使用   <?xml   ?>,   
  ;   不然你必须用PHP来输出:<?   echo   '<?xml   version="1.0"';   ?>   
  ;   本指令也会影响到缩写形式   <?=,它和   <?   echo   等价,要使用此缩写必须允许短标识。   
    
  asp_tags   
=   Off   
  
;   是否允许ASP风格的标记"<%   %>",这也会影响到缩写形式:<%=   $value   %>   
    
  
precision   =   12   
  
;[recommended]->precision   =   14     
  
;   浮点型数据显示的有效位数   
    
  y2k_compliance   
=   On   
  
;   强制打开2000年适应   (可能在非Y2K适应的浏览器中导致问题)   
    
  
output_buffering   =   Off   
  
;[recommended]->output_buffering   =   4096   
  
;   输出缓存允许你甚至在输出正文内容之后发送http头(包括cookies)。   
  
;   其代价是输出层减慢一点点速度。   
  
;   你可以在运行期间通过调用输出缓冲函数启用输出缓存。   
  
;   你还可以通过设置"output_buffering=On"来为所有文件启用输出缓存(默认4096)。   
  
;   如果你想指定缓冲区的最大字节数,你可以直接将"On"替换成数字,   
  
;   比如:"output_buffering=4096"指定了缓存上限为4096字节。   
    
  
;output_handler   =   
  ;   
你可以将所有脚本输出重定向到一个输出处理函数。   
  
;   比如,重定向到"mb_output_handler"函数时,字符编码将被透明地转换为指定的编码。   
  
;   一旦你在这里指定了输出处理程序,"output_buffering"将被自动打开。   
  
;   注意1:   在编写可移植脚本的时候不能依赖这个指令,而应明确的调用ob_start()函数打开输出缓存
  
;                 使用这个指令可能会导致某些你不熟悉的脚本出错。   
  
;   注意2:   你不能同时使用"mb_output_handler""ob_iconv_handler"   
  
;                 你也不能同时使用"ob_gzhandler""zlib.output_compression"   
  
;   注意3:   如果启用了zlib输出压缩,"output_handler"必须为空,取而代之,必须启用"zlib.output_handler"
    
  zlib
.output_compression   =   Off   
  
;   使用zlib库透明地压缩脚本输出结果。   
  
;   该指令的值可以设置为:Off/On/字节数(用来作为压缩缓冲区大小,默认为4KB)   
  
;   如果在php.ini或者apache配置中打开这个功能,当浏览器发送"Accept-Encoding:   gzip(deflate)"头时,   
  
;   "Content-Encoding:   gzip(deflate)""Vary:   Accept-Encoding"头将加入到应答头当中。   
  
;   你可以在答头输出之前用ini_set()函数在脚本中禁止这个特性,   
  
;   如果你输出一个"Content-Type:   image/"这样的应答头,压缩将不会启用(为了防止Netscape的bug)。   
  
;   你可以在输出"Content-Type:   image/"之后使用"ini_set('zlib.output_compression',   'On')"重新打开这个特性。   
  
;   注意1:   压缩率会受压缩缓冲区大小的影响,如果你想得到更好的压缩质量,请指定一个较大的压缩缓冲区。   
  
;   注意2:   如果启用了zlib输出压缩,"output_handler"必须为空,取而代之,必须启用"zlib.output_handler"。   
    
  
;zlib.output_handler   =   
  ;   
在打开"zlib.output_compression"指令的情况下,除这里以外,你不能另外指定输出处理程序。   
  
;   这个指令和"output_handler"起相同的作用,但是顺序不同。   
    
  implicit_flush   
=   Off   
  
;   这个指令告诉PHP输出层在每个输出块之后自动刷新自身数据。默认为   FALSE   
  
;   这等效于在每个print()、echo()、HTML块之后自动调用flush()函数。   
  
;   打开这个选项对程序执行的性能有严重的影响,通常只推荐在调试时使用。   
  
;   在CLI   SAPI的执行模式下,该标记默认为   TRUE   。   
    
  unserialize_callback_func
=   
  ;   
如果解序列化程序需要实例化一个未定义类,该这里指定的回调函数将以该未定义类的名字作为参数被调用,   
  
;   以免得到不完整的"__PHP_Incomplete_Class"对象。   
  
;   如果这里没有指定函数,或者指定的函数不包含(或实现)那个未定义的类,将会显示一条警告信息。   
  
;   只有在你真想执行这样一个回调函数的情况下,才需要指定该参数的值。   
  
;   可以通过   php.ini、ini_set()   或   .htaccess   定义"unserialize_callback_func"。   
  
;   若要禁止这个特性,只需置空此设定。   
    
  serialize_precision   
=   100   
  
;   将浮点型和双精度型数据序列化存储时,序列化精度指明了有效位数。   
  
;   默认值能够确保浮点型数据被解序列化程序解码时不会有数据丢失。   
    
  allow_call_time_pass_reference   
=   On   
  
;[recommended]->allow_call_time_pass_reference   =   Off   
  
;   强迫函数调用时按引用传递参数。   
  
;   php反对使用这一方法,并可能在将来版本的PHP/Zend里不再支持。   
  
;   鼓励的方法是在函数声明里指定哪些参数按引用传递。   
  
;   我们鼓励你尝试关闭这一选项并确认你的脚本仍能正常工作,以保证你的脚本在将来版本的语言里仍能正常工作。   
  
;   (每次使用此特性都会收到一条警告:参数会被按值传递而不是按照引用传递)   ;;;;;;;;;;;;;;

;   资源限制   ;;   
  ;;;;;;;;;;;;;;   
    
  
max_execution_time   =   30   
  
;   每个脚本最大允许执行时间,   按秒计。默认为30秒。   
  
;   这个参数有助于阻止劣质脚本无休止的占用服务器资源。   
  
;   :   "max_execution_time"仅影响脚本本身的运行时间。   
  
;   任何其它花费在脚本运行之外的时间,如用system()/sleep()函数的使用、数据库查询、文件上传等,都不包括在内。   
  
;   在安全模式下,你不能用ini_set()在运行时改变这个设置。   
    
  max_input_time   
=   60   
  
;   每个脚本接收输入数据的最大允许时间(POST,   GET,   upload),   按秒计   
    
  memory_limit   
=   8M   
  
;   设定一个脚本所能够申请到的最大内存字节数。   
  
;   这有助于防止劣质脚本消耗完服务器上的所有内存。   
  
;   要使用此指令必须在编译的时候激活。   
  
;   因此   configure   一行中应该包括:--enable-memory-limit   
  
;   如果不需要任何内存上的限制,必须将其设为   -1   
  
;   自php4.3.2   起,当设置了memory_limit后,memory_get_usage()函数将变为可用   
    
    
  
;;;;;;;;;;;;;;;;;;;;   
  ;;   
出错处理和日志   ;;   
  ;;;;;;;;;;;;;;;;;;;;   
    
  
error_reporting     =     E_ALL   &   ~E_NOTICE   &   ~E_STRICT   
  
;[recommended]->error_reporting     =     E_ALL   
  
;   显示所有的错误,除了提醒和编码标准化警告。   
  
;   错误报告是位字段。可以将数字加起来得到想要的错误报告等级。   
  
;   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                           ;   显示所有的错误,除了提醒   
  
;error_reporting   =   E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR     ;   仅显示错误   
    
  display_errors   
=   On   
  
;[recommended]->display_errors   =   Off   
  
;   作为输出的一部分显示出错误信息   
  
;   在最终发布的web站点上,强烈建议你关掉这个特性,并使用错误日志代替(参看下面)。   
  
;   在最终发布的web站点打开这个特性可能暴露一些安全信息,   
  
;   例如你的web服务上的文件路径、数据库规划或别的信息。   
    
  display_startup_errors   
=   Off   
  
;   即使"display_errors"特性被打开,关闭此参数也将不显示PHP启动时的错误。   
  
;   强烈建议你关掉这个特性,除非你必须要用于调试中。   
    
  log_errors   
=   Off   
  
;[recommended]->log_errors   =   On   
  
;   在日志文件里记录错误(服务器指定的日志,stderr标准错误输出,或error_log(下面的))   
  
;   正如上面说明的那样,强烈建议你在最终发布的web站点时用日志记录错误而不是直接输出。   
    
  log_errors_max_len   
=   1024   
  
;   设置错误日志文件的最大长度。   
  
;   设为   0   可以允许无限长度。   
    
  ignore_repeated_errors   
=   Off   
  
;   忽略重复的错误信息   
  
;   如果关闭这个参数,错误信息必须出现在同一个文件的同一行才被忽略。   
  
;   如果打开这个参数,则没有这个限制。   
    
  ignore_repeated_source   
=   Off   
  
;   忽略重复的错误源   
  
;   忽略重复的错误信息时忽略重复的错误源   
  
;   如果打开这个参数,将不会记录不同的出错文件和对应行的错误信息。   
    
  report_memleaks   
=   On   
  
;   报告内存泄漏   
  
;   如果关闭该参数,将不记录或者显示内存泄漏   
  
;   这个参数只在调试编译中起作用,并且必须在错误报告中包含   E_WARNING   
    
  track_errors   
=   Off   
  
;   保存最近一个错误/警告消息于变量$php_errormsg   (boolean)中   
    
  
;html_errors   =   Off   
  
;   禁用出错信息中的HTML标记   
  
;   注意:   不要在发布的程序中使用这个特性。   
    
  
;docref_root   =   "/phpmanual/"   
  
;docref_ext   =   .html   
  
;   如果打开了html_errors参数,PHP将会在出错信息上显示超连接,   
  
;   直接链接到一个说明这个错误或者导致这个错误的函数的页面。   
  
;   你可以从[url]http://www.php.net/docs.php[/url]下载php手册,并设置docref_root参数,将他指向你本地的手册所在目录。   
  
;   你还必须设置"docref_ext"来指定文件的扩展名。   
  
;   注意:   不要在发布的程序中使用这个特性。   
    
  
;error_prepend_string   =   "<font   color=ff0000>"   
  
;   用于错误信息前输出的字符串   
    
  
;error_append_string   =   "</font>"   
  
;   用于错误信息后输出的字符串   
    
  
;error_log   =   filename   
  
;   将错误日志记录到哪个文件中。   
  
;   如果设为"syslog",   错误日志将被记录到系统日志中(NT下的事件日志,   Unix下的syslog(3))   ;;;;;;;;;;;;;;   
  ;;   
数据处理   ;;   
  ;;;;;;;;;;;;;;   
    
  ;
arg_separator.output   =   "&amp;"   
  
;   PHP所产生的URL中来分隔参数的分隔符。默认值是"&"   
    
  
;arg_separator.input   =   ";&"   
  
;   PHP解析URL中的变量时使用的分隔符列表,默认值是"&"   
  
;   注意:   字符串中的任何字符都将被看着分割符   
    
  variables_order   
=   "EGPCS"   
  
;[recommended]->variables_order   =   "GPCS"   
  
;   PHP注册   GET,   POST,   Cookie,   Environment,   Built-in   变量的顺序。   
  
;   (以   G,   P,   C,   E,   S   表示,通常以   EGPCS   或   GPC   或   ES   的方式引用)。   
  
;   按从左到右记录,新值覆盖旧值。   
  
;   举例说,将其设为"GP",会导致   PHP   完全忽略环境变量、cookies   、server,   
  
;   并用   GET   方法的变量覆盖   POST   方法的同名变量   
    
  register_globals   
=   Off   
  
;   是否将这些   EGPCS   变量注册为全局变量。自   PHP   4.2.0   开始,本指令默认为   off   
  
;   例如,如果打开这个特性,那么URL:[url]http://www.example.com/test.php?id=3[/url]   将产生   $id   
  
;   或者从   $_SERVER['DOCUMENT_ROOT']   得到   $DOCUMENT_ROOT   。   
  
;   如果你不想让脚本中的全局变量和用户输入的数据搞混的话,请关闭它。   
  
;   推荐使用PHP的预定义变量来替代,例如超全局变量:$_ENV,$_GET,$_POST,$_COOKIE   和   $_SERVER   
  
;   请注意,   register_globals不能在运行时设定(ini_set()),尽管在主机允许时可以用   .htaccess   来设置   
  
;   一个   .htaccess   项目的例子:php_flag   register_globals   on   
  
;   :   register_globals   受   variables_order   指令的影响。   
    
  register_long_arrays   
=   On   
  
;[recommended]->register_long_arrays   =   Off   
  
;   是否启用旧式的长式数组(HTTP_*_VARS),推荐关闭该特性以获得更好的性能。   
    
  register_argc_argv   
=   On   
  
;[recommended]->register_argc_argv   =   Off   
  
;   是否声明   argv和argc   变量(其中包含用GET方法传来的数据)   
  
;   【argv为变量数组,argc为变量数组中元素个数】   
  
;   若你不想使用这两个变量,应当关掉它以提高性能。   
    
  post_max_size   
=   8M   
  
;   PHP接受的POST数据最大长度。此设定也影响到文件上传。   
  
;   要上传大文件,该值必须大于"upload_max_filesize"   
  
;   如果配置脚本中激活了内存限制,"memory_limit"也会影响文件上传。   
  
;   一般说来,"memory_limit"应该比"post_max_size"要大。   

0 0