分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Apr 25
0 引言
随着计算机应用的日益普及,我国相当数量的企业已采用计算机绘图,而其中绝大多数选用了AutoCAD作为工具软件。我国开发的面向产品的CAD软件大部分也是基于AutoCAD进行二次开发的,无论是交互式绘图,还是二次开发,对于标题栏、明细栏及其它类似表格的处理,基本上都采用插入图块再定位写文本的方式,不仅麻烦,而且在汇总整台机器的“三表”(指零件明细表、标准件明细表及外购件明细表)及其它相关的报告时,仍需要做大量、繁琐的人工抄录及检索工作。而属性块可以较好地解决以上问题。
Apr 20

[PHP 5.0.4 php.ini-dist]

;;;;;;;;;;
;; 警告 ;;
;;;;;;;;;;
; 这是PHP新安装时的默认设置。默认设置适合于开发但是不适合正式应用。
; 出于安全方面考虑,请在发布正式应用程序时使用php.ini-recommended
; 并且参考如下页面:http://php.ne.../security.php


;;;;;;;;;;;;;;;;;;;
;; 关于 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里不再支持。
; 鼓励的方法是在函数声明里指定哪些参数按引用传递。
; 我们鼓励你尝试关闭这一选项并确认你的脚本仍能正常工作,以保证你的脚本在将来版本的语言里仍能正常工作。
; (每次使用此特性都会收到一条警告:参数会被按值传递而不是按照引用传递)

;;;;;;;;;;;;;
; 安全模式

safe_mode = Off
; 安全模式

safe_mode_gid = Off
; 安全模式默认情况下在打开文件时会做UID比较检查。
; 如果你想将其放宽到GID比较,可以打开这个参数。

safe_mode_include_dir =
; 在安全模式下,该文件夹和其子文件夹下的文件被包含时,将跳过UID/GID检查。
; (文件夹必须必须在"include_path"中或者用完整路径来包含)
; 从PHP4.2 开始,本指令可以接受和"include_path"指令类似的风格用分号隔开的路径,而不只是一个目录。
; 指定的限制实际上是一个前缀,而非一个目录名,也就是说"/dir/incl"将允许访问"/dir/include"和"/dir/incls"
; 如果您希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线,例如:"/dir/incl/"

safe_mode_exec_dir =
; 在安全模式下,只有该文件夹下的可执行程序才能被允许通过system()和其它执行系统程序的函数执行。
; 这些函数是:escapeshellarg, escapeshellcmd, exec, passthru, proc_close, proc_get_status,
; proc_nice, proc_open, proc_terminate, shell_exec, system ....

safe_mode_allowed_env_vars = PHP_
; 该指令包含用逗号分隔的前缀列表,表示用户在安全模式下仅可以更改在此列出的前缀开头的环境变量的值。
; 因为设置某些环境变量,可能会导致潜在的安全漏洞。
; 默认地,用户将仅能设定以PHP_开头的环境变量,(如: PHP_FOO=BAR)。
; 注意: 如果这一参数值为空,PHP将允许用户更改任意环境变量!

safe_mode_protected_env_vars = LD_LIBRARY_PATH
; 这个指令包含一个用逗号分隔的环境变量列表,在安全模式下,列表中的变量是远端用户不能用putenv()更改的。
; 这些变量甚至在"safe_mode_allowed_env_vars"设置为允许的情况下也会得到保护。

;open_basedir =
; 将PHP允许打开的所有文件都限制在此目录下。无论安全模式是否打开,该参数都将起作用。
; 如果web服务器使用了per-directory或虚拟主机,这个参数将非常有意义。
; 当一个脚本试图用例如fopen()或者gzopen()打开一个指定目录树之外的文件时,将遭到拒绝。
; 所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
; 特殊值'.'指定了存放该脚本的目录将被当做基准目录。
; 在Windows中,用分号分隔目录。在任何其它系统中用冒号分隔目录。
; 作为Apache模块时,父目录中的open_basedir路径将自动被继承。
; 用open_basedir指定的限制实际上是前缀,不是目录名。也就是说"/dir/incl"将允许访问"/dir/include"和"/dir/incls"
; 如果您希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线,例如:"/dir/incl/"
; 默认是允许打开所有文件。

disable_functions =
; 这个指令让你可以出于安全原因禁用特定的函数。它接受一个用逗号分隔的函数名列表。
; 无论安全模式是否打开,该参数都将起作用。
; 本指令只能设置在php.ini中。例如你不能将其设置在httpd.conf中

disable_classes =
; 这个指令让你可以出于安全原因禁用特定的类。它接受一个用逗号分隔的类名列表。
; 无论安全模式是否打开,该指令都将起作用。本指令自 PHP 4.3.2 起可用。
; 本指令只能设置在php.ini中。例如你不能将其设置在httpd.conf中

;highlight.string  = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg      = #FFFFFF
;highlight.default = #0000BB
;highlight.html    = #000000
; 语法高亮模式的色彩。
; 只要能被<font color=???>接受的东西就能正常工作。

;;;;;;;;;
; 杂项

expose_php = On
; 决定PHP是否暴露它被安装在服务器上的事实(比如出现在http头中)
; 它不会有安全上的威胁, 但它使得检查你的服务器上是否安装了PHP成为了可能。
;;;;;;;;;;;;;;
;; 资源限制 ;;
;;;;;;;;;;;;;;

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将会在出错信息上显示超连接,
; 直接链接到一个说明这个错误或者导致这个错误的函数的页面。
; 你可以从http://www.ph...在目录。
; 你还必须设置"docref_ext"来指定文件的扩展名。
; 注意: 不要在发布的程序中使用这个特性。

;error_prepend_string = "<font color=ff0000>"
; 用于错误信息前输出的字符串

;error_append_string = "</font>"
; 用于错误信息后输出的字符串

;error_log = filename
; 将错误日志记录到哪个文件中。
; 如果设为"syslog", 错误日志将被记录到系统日志中(NT下的事件日志, Unix下的syslog(3))

;;;;;;;;;;;;;;
;; 数据处理 ;;
;;;;;;;;;;;;;;

;arg_separator.output = "&"
; 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:http://www.ex...test.php?id=3 将产生 $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"要大。

;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 魔术引号(自动字符串转义)

magic_quotes_gpc = On
;[recommended]->magic_quotes_gpc = Off
; 在输入的GET/POST/Cookie数据里使用自动字符串转义【比如,值 (It's "PHP!") 会自动转换成 (It\'s \"PHP!\")】
; 这里的设置自动影响$_GEST,$_POST,$_COOKIE数组的值。如果打开,值 (It's "PHP!") 会自动转换成 (It\'s \"PHP!\")。
; (个人意见:关闭此特性, 因为它在处理双字节汉字的时候可能会破坏某些繁体字和特殊字符)

magic_quotes_runtime = Off
; 对运行时从外部资源产生的数据使用自动字符串转义
; 例如:用SQL查询得到的数据,用exec()函数得到的数据,等等

magic_quotes_sybase = Off
; 采用 Sybase形式的自动字符串转义( 用 '' 表示 ' 而不用 \' )

auto_prepend_file =
; 指定在主文件之前自动解析的文件名。
; 该文件就像调用了include()函数一样被包含进来,因此会使用"include_path"

auto_append_file =
; 指定在主文件之后自动解析的文件名。
; 该文件就像调用了include()函数一样被包含进来,因此会使用"include_path"
; 注: 如果脚本通过 exit() 终止,则自动后缀不会发生。

default_mimetype = "text/html"
;default_charset = "iso-8859-1"
; PHP总是默认地在"Content-type:"头中设置输出文档的MIME类型和字符集的编码方式。
; 要让输出字符集失效,只要设置为空或注释掉即可。
; PHP的默认设置会输出"Content-Type: text/html"
; 若去掉"default_charset"前的注释并将其设为"gb2312",
; 那么将会输出"Content-Type: text/html; charset=gb2312"

;always_populate_raw_post_data = On
; 总是填充$HTTP_RAW_POST_DATA变量,"HTTP_RAW_POST_DATA"意为"HTTP原始POST数据"
;;;;;;;;;;;;;;;;
;; 路径和目录 ;;
;;;;;;;;;;;;;;;;

;include_path = ".;c:\php\includes"
; 指定一组目录用于require(),include()和fopen_with_path()函数来寻找文件。
; 格式和系统的 PATH 环境变量类似:
; 一组目录的列表,在 UNIX 下用冒号分隔,在 Windows 下用分号分隔。
; 在包含路径中使用 '.' 可以允许相对路径,它代表当前目录。
; UNIX: "/path1:/path2"
; Windows: "\path1;\path2"

doc_root =
; PHP页面在服务器上的根目录。仅在非空时有效。
; 如果PHP被配置为安全模式,则此目录之外的文件一概不被解析。
; 如果PHP编译时没有指定FORCE_REDIRECT,并且在非IIS服务器上以CGI方式运行,
; 则必须设置此项。(参见手册中的安全部分)
; 替代方案是使用下面的"cgi.force_redirect"指令。

user_dir =
; 告诉php在使用 /~username 打开脚本时到哪个目录下去找,仅在非空时有效。
; 也就是在用户目录之下使用PHP文件的基本目录名,例如:public_html

extension_dir = "./"
; 存放扩展库(模块)的目录,也就是PHP用来寻找动态连接扩展库的目录

enable_dl = On
; 是否使dl()函数有效。
; dl()函数在除apache以外的多线程的服务器(如:IIS或Zeus)上不能正确地工作,并在其上默认为禁止。

;cgi.force_redirect = 1
; 打开cgi强制重定向为以CGI方式运行的php提供了必要的安全保护,php默认打开了该参数。
; 你若自己关闭了它,请自己负责后果
; 注意:在IIS/OmniHTTPD/Xitami上则必须关闭它!

;cgi.nph = 1
; 如果该参数打开,那么它会强制cgi对每个http请求始终发送状态码: 200

;cgi.redirect_status_env =
; 如果打开了cgi.force_redirect,并且你没有将php运行在Apache或Netscape(iPlanet)服务器上,
; 可能需要设定一个cgi重定向环境变量名,PHP将去寻找它来知道可以继续执行下去。
; 设置这个变量会导致安全漏洞,请务必在设置前搞清楚自己在做什么。

;fastcgi.impersonate = 1
; IIS中的FastCGI支持模仿客户端安全令牌的能力。这使得IIS能够定义运行时所基于的请求的安全上下文。
; Apache中的mod_fastcgi不支持此特性(03/17/2002)
; 如果在IIS中运行则设为1,默认为 0

;cgi.rfc2616_headers = 0
; 指定PHP在发送HTTP响应代码时使用何种报头。
; 如果设定为0,PHP发送一个"Status: "报头,Apache和其它web server都支持。
; 若设为0,则PHP使用Apache支持的头。若设为1,则PHP使用RFC2616标准的头。默认值为0
; 除非你知道自己在做什么,否则保留其值为 0


;;;;;;;;;;;;;;
;; 文件上传 ;;
;;;;;;;;;;;;;;

file_uploads = On
; 是否允许HTTP文件上传。参见upload_max_filesize,upload_tmp_dir,post_max_size

;upload_tmp_dir =
; 文件上传时存放文件的临时目录。必须是PHP进程用户可写的目录。如果未指定则PHP使用系统默认值。

upload_max_filesize = 2M
; 允许上传的文件的最大尺寸。


;;;;;;;;;;;;;;
;; 文件打开 ;;
;;;;;;;;;;;;;;

allow_url_fopen = On
; 是否允许打开远程文件( http:// or ftp://)

;from="john@doe.com"
; 定义匿名ftp的密码(一个email地址)

;user_agent="PHP"
; 定义"User-Agent"字符串

default_socket_timeout = 60
; socket超时,单位是秒

;auto_detect_line_endings = Off
; 如果的你脚本必须处理Macintosh文件,或者你运行在Macintosh上,同时又要处理unix或win32文件,
; 设置这个标志可以让PHP自动侦察文件结束符,以便fgets()和file()函数正常工作。
; 默认值是 Off,因为在检测第一行的 EOL 习惯时会有很小的性能损失,
; 而且在 Unix 系统下使用回车符作为项目分隔符的人们会遭遇向下不兼容的行为。


;;;;;;;;;;;;;;
;; 动态扩展 ;;
;;;;;;;;;;;;;;
; 若你希望一个扩展库自动加载,可用下面的语法:
; extension=modulename.extension
; 例如,在windows上:
; extension=msql.dll
; 在UNIX上:
; extension=msql.so
; 注意,这只应当是模块的名字,不需要附带目录信息。
; 上面的extension_dir已经指示了扩展库的位置。


;Windows 扩展
;注意,ODBC是内置支持的,不需要使用扩展。(MySQL没有内置)
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_mysql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_yaz.dll
;extension=php_zip.dll
;;;;;;;;;;;;;;
;; 模块设置 ;;
;;;;;;;;;;;;;;

[Syslog]
define_syslog_variables  = Off
; 是否定义各种的系统日志变量,如:$LOG_PID, $LOG_CRON 等等。
; 关掉它以提高效率的好主意。
; 你可以在运行时调用函数define_syslog_variables()来定义这些变量

[mail function]
SMTP = localhost ;仅用于win32系统
smtp_port = 25 ;仅用于win32系统
;sendmail_from = me@example.com ;仅用于win32系统
;sendmail_path = ;仅用于unix, 也可支持参数(默认的是'sendmail -t -i')

;mail.force_extra_parameters =
; Force the addition of the specified parameters to be passed as extra parameters to the sendmail binary.
; These parameters will always replace the value of the 5th parameter to mail(), even in safe mode.

[SQL]
sql.safe_mode = Off

[ODBC]
;odbc.default_db    =  (暂未实现)
;odbc.default_user  =  (暂未实现)
;odbc.default_pw    =  (暂未实现)
odbc.allow_persistent = On  ; 是否允许持久连接
odbc.check_persistent = On  ; 在重用前检查连接是否还可用
odbc.max_persistent = -1    ; 每个进程中允许的最大持久连接数。-1 代表无限制
odbc.max_links = -1         ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制

odbc.defaultlrl = 4096
; 处理LONG类型的字段。返回变量的字节数,0代表通过(?)
; Handling of LONG fields.  Returns number of bytes to variables.  0 means passthru.

odbc.defaultbinmode = 1
; 处理二进制数据。0代表通过(?) 1返回原样, 2转换为字符
; 参见odbc_binmode和odbc_longreadlen文档以得到uodbc.defaultlrl和uodbc.defaultbinmode的解释。

[MySQL]
; php内置的MySQL扩展库无法同4.1.0以上版本的MySQL一起工作。你需要使用MySQLi扩展。
; MySQLi扩展模块与recode扩展模块共同使用的时候,可能会造成PHP的崩溃和启动时出现问题。
; 如果您需要除latin(默认)以外其它的字符集,您需要安装有已编译字符集支持的外置libmysql(未集成)

mysql.allow_persistent = On ; 允许或禁止持久连接
mysql.max_persistent = -1   ; 每个进程中允许的最大持久连接数。-1 代表无限制
mysql.max_links = -1        ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制

mysql.default_socket = ; 用于本地MySql连接的默认的套接字名。为空时使用MYSQL内置的默认值
mysql.default_port =
; mysql_connect()使用的默认TCP端口,如果没有指定默认端口号,
; mysql_connect()将按顺序从:(1)$MYSQL_TCP_PORT环境变量、
; (2)/etc/services文件中的mysql-tcp项(unix)、(3)编译时指定的MYSQL_PORT常量 中获得。
; Win32下,只使用 MYSQL_PORT 常量。

mysql.default_host =  ; mysql_connect() 默认使用的主机(安全模式下无效)
mysql.default_user =  ; mysql_connect() 默认使用的用户名(安全模式下无效)
mysql.default_password =
; mysql_connect() 默认使用的密码(安全模式下无效)
; 注意,在这个文件下保存密码通常是一个坏主意
; 任何可以使用PHP访问的用户都可以运行'echo cfg_get_var("mysql.default_password")'来显示密码!
; 而且当然地,任何有读该文件权力的用户也能看到那个密码。

mysql.connect_timeout = 60
; 连接超时(秒),-1 代表无限制。
; 在Linux中,这个参数设定了等候来自服务器的响应的时长。

mysql.trace_mode = Off
; 跟踪模式。当打开这个特性后,扫描表或索引时SQL的警告将会被显示。

[MySQLI]

mysqli.max_links = -1  ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制

mysqli.default_socket =  ; 用于本机MySql连接的默认的套接字名。为空时使用MYSQL内置的默认值
mysqli.default_port = 3306
; mysqli_connect()使用的默认TCP端口,如果没有指定默认端口号,
; mysqli_connect()将按顺序从:(1)$MYSQL_TCP_PORT环境变量、
; (2)/etc/services文件中的mysql-tcp项(unix)、(3)编译时指定的MYSQL_PORT常量 中获得。
; Win32下,只使用 MYSQL_PORT 常量。

mysqli.default_host =  ; mysqli_connect() 默认使用的主机(安全模式下无效)
mysqli.default_user =  ; mysqli_connect() 默认使用的用户名(安全模式下无效)
mysqli.default_password =
; mysqli_connect() 默认使用的密码(安全模式下无效)
; 注意,在这个文件下保存密码通常是一个坏主意
; 任何可以使用PHP访问的用户都可以运行'echo cfg_get_var("mysql.default_password")'来显示密码!
; 而且当然地,任何有读该文件权力的用户也能看到那个密码。

mysqli.reconnect = Off
; 跟踪模式。当打开这个特性后,扫描表或索引时SQL的警告将会被显示。

[mSQL]
msql.allow_persistent = On  ; 允许或禁止持久连接
msql.max_persistent = -1    ; 最大持久连接数。-1 代表无限制
msql.max_links = -1         ; 最大连接数(持久和非持久)。-1 代表无限制

[PostgresSQL]
pgsql.allow_persistent = On ; 允许或禁止持久连接
pgsql.max_persistent = -1   ; 每个进程中允许的最大持久连接数。-1 代表无限制
pgsql.max_links = -1        ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制

pgsql.auto_reset_persistent = Off
; 检测用在pg_pconnect()上中断了的持久连接,需要一些额外开销。

pgsql.ignore_notice = 0
; 是否忽略PostgreSQL后端的通告消息。记录后端的通告消息需要一些额外开销。

pgsql.log_notice = 0
; 是否在日志中记录PostgreSQL后端的通告消息。除非pgsql.ignore_notice=0,否则无法记录。

[Sybase]
sybase.allow_persistent = On ; 允许或禁止持久连接
sybase.max_persistent = -1   ; 每个进程中允许的最大持久连接数。-1 代表无限制
sybase.max_links = -1        ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制
;sybase.interface_file = "/usr/sybase/interfaces"
sybase.min_error_severity = 10   ; 显示错误的最低严重性
sybase.min_message_severity = 10 ; 显示消息的最低重要性

sybase.compatability_mode = Off
; 与PHP3兼容的模式。若打开,这将导致PHP自动根据结果的Sybase类型赋值,而不是把它们全当成字符串。
; 这个兼容模式不会永远保留,将来会被丢弃。

[Sybase-CT]
sybct.allow_persistent = On  ; 允许或禁止持久连接
sybct.max_persistent = -1    ; 每个进程中允许的最大持久连接数。-1 代表无限制
sybct.max_links = -1         ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制
sybct.min_server_severity = 10 ; 显示服务端错误的最低严重性
sybct.min_client_severity = 10 ; 显示客户端错误的最低严重性

[dbx]
; returned column names can be converted for compatibility reasons
; possible values for dbx.colnames_case are
; "unchanged" (default, if not set)
; "lowercase"
; "uppercase"
; the recommended default is either upper- or lowercase, but
; unchanged is currently set for backwards compatibility
dbx.colnames_case = "unchanged"

[bcmath]
bcmath.scale = 0
; 用于所有bcmath函数的10十进制数数字的个数

[browscap]
;browscap = extra/browscap.ini
;browscap = c:/windows/system32/inetsrv/browscap.ini ;winxp
;browscap = c:/winnt/system32/inetsrv/browscap.ini ;win2000
; 只有PWS和IIS需要这个设置
; 你可以从 http://www.ga...downloads.asp 得到一个 browscap.ini 文件。

[Informix]
ifx.default_host =        ; ifx_connect() 默认使用的主机(安全模式下无效)
ifx.default_user =        ; ifx_connect() 默认使用的用户名(安全模式下无效)
ifx.default_password =    ; ifx_connect() 默认使用的密码(安全模式下无效)
ifx.allow_persistent = On ; 允许或禁止持久连接
ifx.max_persistent = -1   ; 每个进程中允许的最大持久连接数。-1 代表无限制
ifx.max_links = -1        ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制

ifx.textasvarchar = 0
; 若打开,select状态符返回一个"text blob"字段的内容,而不是它的id

ifx.byteasvarchar = 0
; 若打开,select状态符返回一个"byte blob"字段的内容,而不是它的id

ifx.charasvarchar = 0
; 追踪从固定长度的字符列里剥离的空格。可能对 Informix SE 用户有效。

ifx.blobinfile = 0
; 若打开,text和byte blobs的内容被导出到一个文件而不是保存到内存。

ifx.nullformat = 0
; 设为0, NULL被作为空字段返回。设为1, NULL作为字串"NULL"返回。

[Session]
; 注意,除非使用session_register()或$_SESSION注册了一个变量。
; 否则不管是否使用了session_start(),都不会自动添加任何session记录。

session.save_handler = files
; 用于保存/检索数据的处理程序,默认是文件(files)。

;session.save_path = "/tmp"
; 在"session.save_handler=files"的情况下,这个参数指定了会话数据文件的保存路径。
; Windows用户必须修改此参数才能使用会话相关函数。
; 你可以这样定义路径(N是一个整数):session.save_path = "N;[MODE;]/path"
; N表示可以使用N层深度的子目录,而不是将所有数据文件都保存在一个目录下。
; [MODE;]加了括号表示可选,表示它必须用8进制数来表示,其默认值是600 (等于384)。
; The file storage module creates files using mode 600 by default.
; Note that this does not overwrite the process's umask.
; 这是一个提高Windows下海量会话性能的好主意。
; 注意0: "N;/path"两边的双引号不能省略。
; 注意1: php不会自动建立这些文件夹结构。你可以使用ext/session目录下的脚本来做这件事情。
; 注意2: 如果你指定的文件夹可以被不安全的用户读取(比如默认的"/tmp"),那么将会带来安全漏洞。
; 注意3: 参见下面有关垃圾搜集的章节。

session.use_cookies = 1
; 是否使用cookie在客户端保存session id,默认为1(使用)

;session.use_only_cookies = 1
; 只使用Cookie来承载会话,默认为0 (关闭)
; 打开这个选项可以避免用URL传递会话带来的安全问题。但是禁用Cookie的客户端将使session无法工作。

session.name = PHPSESSID
;用在cookie里的会话标识名,只能包含字母和数字。

session.auto_start = 0
; 在客户访问任何页面时自动初始化会话,默认禁止。
; 因为类定义必须在session启动之前被载入,所以若打开这个选项,你就不能在sessions中存放对象。

session.cookie_lifetime = 0
; session_cookie的有效期(秒),若为0,则仅在浏览器打开期间有效。

session.cookie_path = /
; session_cookie的作用路径

session.cookie_domain =
; session_cookie的作用域,默认为空。

session.serialize_handler = php
; 用来序列化/解序列化数据的处理程序,php是PHP的标准序列化/解序列化处理程序。

session.gc_probability = 1
session.gc_divisor     = 100
;[recommended]->session.gc_divisor = 1000
; 定义在每次初始化会话时,启动垃圾回收程序的概率。
; 这个收集概率计算公式如下:gc_probability/gc_divisor
; 比如:1/100 表示每一个新会话初始化时,有1%的概率会启动垃圾回收程序。

session.gc_maxlifetime = 1440
; 经过此参数所指的秒数后,保存的数据将被视为'垃圾'并由垃圾回收程序清理。
; 判断的标准是文件建立的时间,而不是最后刷新数据的时间。
; 注意: 如果你使用了子目录来存储会话的数据文件(参见:session.save_path),垃圾回收程序不会自动启动。
; 你必须使用一个你自己编写的shell脚本、克隆目录或者其他办法来执行垃圾搜集。
; 比如,下面的脚本相当于设置了"session.gc_maxlifetime=1440" (24分钟):
; cd /path/to/sessions; find -cmin +24 | xargs rm

session.bug_compat_42 = 1
;[recommended]->session.bug_compat_42 = 0
session.bug_compat_warn = 1
; PHP4.2之前的版本有一个未注明的"特性"(也可看作bug):
; 即使在"register_globals = Off"的情况下也允许初始化全局session变量,
; 如果你在PHP4.3之后的版本中使用这个特性,会显示一条警告。你可以分别禁用这个特性和警告。
; 若打开bug_compat_42,将只显示警告。

session.referer_check =
; 检查HTTP头中的"Referer"以判断包含于URL中的会话id是否有效
; HTTP_REFERER必须包含这个参数指定的字符串,否则URL中的会话id将被视为无效。
; 默认为空,即不检查。

;session.entropy_length = 16
; 从文件中读取多少字节(entropy:平均信息量)[设定session从高熵值资源读取的位数。]
; 默认为0,表示禁用。
; How many bytes to read from the file. Defaults to 0 (disabled).
; specifies the number of bytes which will be read from the file specified above.

;session.entropy_file = /dev/urandom
; 指定创建会话id的文件夹[使用外部高熵值资源或文件来建立session代码,例如 UNIX 系统上的 /dev/random?或 /dev/urandom]
; Specified here to create the session id.
; gives a path to an external resource (file) which will be used as an additional entropy source
; in the session id creation process.
; Examples are /dev/random or /dev/urandom which are available on many Unix systems.

session.cache_limiter = nocache
; 设为{none/nocache/private/private_no_expire/public}以指定会话页面的缓存控制模式,
; 或者设为空以阻止在http应答头中发送禁用缓存的命令。
; 默认为"nocache"

session.cache_expire = 180
; 指定会话页面在客户端cache中的有效期限(分钟)
; "session.cache_limiter=nocache"时,此设置将失效。

session.use_trans_sid = 0
; 默认是禁止用明码在URL中显示sid(session_id)的,因为它会给你的用户带来安全危险,因为:
; 1- 用户可能将包含有效sid的URL 通过email/irc/QQ/MSN...途径告诉给其他人。
; 2- 包含有效sid的URL可能会被保存在公用电脑上。
; 3- 用户可能保存带有固定不变sid的URL在他们的收藏夹或者浏览历史纪录里面。

session.hash_function = 0
;[recommended]->session.hash_function = 1
; 生成session_id的hash函数,SHA-1的安全性更高一些
; 0: MD5   (128 bits)
; 1: SHA-1 (160 bits)

session.hash_bits_per_character = 4
;[recommended]->session.hash_bits_per_character = 5
; 指定在session_id字符串中的每个字符内保存多少位二进制数,
; 这些二进制数是hash函数的运算结果。
; 4 bits: 0-9, a-f
; 5 bits: 0-9, a-v
; 6 bits: 0-9, a-z, A-Z, "-", ","

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
;[recommended]->url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
; 指定重写哪些HTML标签来包含sid(session_id)(仅在"session.use_trans_sid"打开的情况下有效)
; form和fieldset比较特殊:
; 如果你包含他们,URL重写器将添加一个隐藏的"<input>",它包含了本应当额外追加到URL上的信息。
; 如果你想兼容XHTML标准,请使用"fieldset"代替"form"。
; 注意:所有合法的项都需要一个等号——即使后面没有值。

[MSSQL]
mssql.allow_persistent = On      ; 允许或禁止持久连接
mssql.max_persistent = -1        ; 每个进程中允许的最大持久连接数。-1 代表无限制
mssql.max_links = -1             ; 每个进程中允许的最大连接数(持久和非持久)。-1 代表无限制
mssql.min_error_severity = 10    ; 显示错误的最低严重性
mssql.min_message_severity = 10  ; 显示消息的最低重要性
mssql.compatability_mode = Off   ; 与旧版的PHP3.0兼容的模式。
;mssql.connect_timeout = 5       ; 连接超时(秒)
;mssql.timeout = 60              ; 查询超时(秒)
;mssql.textlimit = 4096          ; 取值范围:0 - 2147483647
;mssql.textsize = 4096           ; 取值范围:0 - 2147483647

;mssql.batchsize = 0
; 每批记录最大条数(0 表示所有记录都在一批当中)

;mssql.datetimeconvert = On
; 指定datetime/datetim4字段的返回方式。
; On => 按照SQL server的设置返回
; Off => 按照 YYYY-MM-DD hh:mm:ss 格式返回

mssql.secure_connection = Off
; 连接到数据库时使用NT身份认证

;mssql.max_procs = 25
; 指定最大进程数,默认为 25

[Assertion]
;assert.active = On      ; 断言(表达式),默认生效。
;assert.warning = On     ; 为每个失败的断言发出警告。
;assert.bail = Off       ; 默认不释放。
;assert.callback = 0     ; 如果断言失败,就调用一个用户函数。
;assert.quiet_eval = 0
; Eval the expression with current error_reporting().  Set to true if you want error_reporting(0) around the eval().

[Ingres II]
ingres.allow_persistent = On ; 允许或禁止持久连接
ingres.max_persistent = -1   ; 最大持久连接数。-1 代表无限制
ingres.max_links = -1        ; 最大连接数(持久和非持久)。-1 代表无限制
ingres.default_database =    ; 默认 database (format : [node_id::]dbname[/srv_class]
ingres.default_user =        ; 默认 user
ingres.default_password =    ; 默认 password

[Verisign Payflow Pro]
pfpro.defaulthost = "test-payflow.verisign.com"  ; 默认的 Signio 服务器; Default Payflow Pro server.
pfpro.defaultport = 443                          ; 连接的默认端口; Default port to connect to.
pfpro.defaulttimeout = 30                        ; 按秒计的默认超时时间; Default timeout in seconds.
;pfpro.proxyaddress =                            ; 默认的代理的 IP 地址(如果需要); Default proxy IP address (if required).
;pfpro.proxyport =                               ; 默认的代理的端口; Default proxy port.
;pfpro.proxylogon =                              ; 默认的代理的登录用户名; Default proxy logon.
;pfpro.proxypassword =                           ; 默认的代理的密码; Default proxy password.

[com]
;com.typelib_file =                      ; 包含GUID文件的路径, IID或包含类型库的文件
;com.allow_dcom = true                   ; 允许分布式COM调用
;com.autoregister_typelib = true         ; com_load()函数自动注册类型库组件常数
;com.autoregister_casesensitive = false  ; 自动注册类型库组件常数时大小写敏感
;com.autoregister_verbose = true         ; 对重复注册的常量显示警告

[mbstring]
;mbstring.language = Japanese
; 用于内部字符表示的语言

;mbstring.internal_encoding = EUC-JP
; internal/script编码。
; 注意:有些编码不能用于此(比如:SJIS, BIG5, ISO-2022-*)

;mbstring.http_input = auto
; http输入编码

;mbstring.http_output = SJIS
; http输出编码。必须将output_handler设置为"mb_output_handler"函数才可以。

;mbstring.encoding_translation = Off
; 允许依照mbstring.internal_encoding设置进行自动编码转换
; 打开这个特性会让输入的字符会转化为内部编码
; 注意: 千万不要将自动编码转换使用于可移植的库或者程序

;mbstring.detect_order = auto
; 编码自动检测指令

;mbstring.substitute_character =
; 当一种字符不能被转换为另一种字符的时候,这里的值就是替代字符。

;mbstring.func_overload = 0
; 用多字节字符串函数替换单字节字符串函数。
; mail(), ereg()...将被替换为mb_send_mail(), mb_ereg()...
; 可用0,1,2,4来组合。比如7表示替换所有。
; 0: 无替换
; 1: 替换mail()
; 2: 替换str*()
; 4: 替换ereg*()

[FrontBase]
;fbsql.allow_persistent = On
;fbsql.autocommit = On
;fbsql.default_database =
;fbsql.default_database_password =
;fbsql.default_host =
;fbsql.default_password =
;fbsql.default_user = "_SYSTEM"
;fbsql.generate_warnings = Off
;fbsql.max_connections = 128
;fbsql.max_links = 128
;fbsql.max_persistent = -1
;fbsql.max_results = 128
;fbsql.batchSize = 1000

[exif]
; Exif UNICODE用户注释将被处理为UCS-2BE/UCS-2LE ,JIS保持不变。
; 在多字节字符串的支持下 this 将被自动的转换为设定的编码。
; 若将mbstring.internal_encoding设为空,根据解码设置,
; 就可以区别motorola和intel的字节指令(解码设置不能为空)
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE
;exif.decode_unicode_intel    = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel    = JIS

[Tidy]
;tidy.default_config = /usr/local/lib/php/default.tcfg
; 默认tidy配置文件路径。

tidy.clean_output = Off
; 是否允许tidy自动清理和修正输出。
; 警告: 如果脚本可能会输出非html文档(比如动态图片),请不要打开此特性。

[soap]
soap.wsdl_cache_enabled=1
; 打开或者关闭WSDL缓冲特性

soap.wsdl_cache_dir="/tmp"
; SOAP扩展存放chche文件的目录。

soap.wsdl_cache_ttl=86400
; cache文件使用期限(秒)。过期后将使用新文件。

; 局部变量:
; tab宽度: 4
; End:
Apr 11

只上过一节课的现代管理


考试复习提纲:
A卷,一(章),第1-2节
    四, 第1-2-3节
    五,第1节
    七,第3节
    八,第2-3节
B卷
   一,第13节
   二,第2节
   三,第1-3节
   四,第2-3节
   五,第1-2节
   八,第2节
   九,第2节

Apr 4

<?
//测试数据
$ar = array(
array(id=>1,pid=>0),
array(id=>2,pid=>0),
array(id=>3,pid=>2),
array(id=>4,pid=>0),
array(id=>5,pid=>3),
array(id=>6,pid=>1),
array(id=>7,pid=>8),
array(id=>8,pid=>6),
array(id=>9,pid=>7),
array(id=>10,pid=>9)
);

//排序函数
function cmd($a,$b) {
if($a[pid]==$b[pid]) return 0;
return $a[pid]>$b[pid]?1:-1;
}

//排序,为避免数据中父节点在子节点后面出现,这种情况在多次修改数据后经常会发生的
//排序的目的就是防止这种情况造成的混乱
uasort($ar,cmd);

//定义目标数组
$d = array();
//定义索引数组,用于记录节点在目标数组的位置
$ind = array();

foreach($ar as $v) {
$v[child] = array(); //给每个节点附加一个child项
if($v[pid] == 0) {
  $i = count($d);
  $d[$i] = $v;
  $ind[$v[id]] =& $d[$i]; //关键! 指向目标数组
}else {
  $i = count($ind[$v[pid]][child]);
  $ind[$v[pid]][child][$i] = $v;
  $ind[$v[id]] =& $ind[$v[pid]][child][$i]; //添加到父亲的孩子节点, 前提,一定要排序!!! 不然就落空了!!(不知道怎么用语言表达...:( )
}
}
//检查结果
print_r($d);
?>

这个算法以前自己也想过

但系发现了一个问题无法解决,就放下了

那个问题就是在顺序调乱的情况下无法进行

今天从phpe里看到这个算法

感觉到的确精辟

通过uasort解决了在顺序调乱的情况下

Apr 3

小学生先会调位现在

上班了也来个调位

晕呀

分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]