php.ini 核心配置选项说明
该列表只包含核心的 php.ini 配置选项。扩展的配置选项在各个扩展的文档页面分别被描述。有关 session 的选项可以在 sessions 页面找到。
httpd 选项
表格 g-3. httpd 选项
名称 默认值 可修改范围 更新记录
async_send 0 php_ini_all
语言选项
表格 g-4. 语言和杂类配置选项
名称 默认值 可修改范围 更新记录
short_open_tag 1 php_ini_perdir 在 php asp_tags 0 php_ini_perdir 在 php precision 14 php_ini_all
y2k_compliance 1 php_ini_all
allow_call_time_pass_reference 1 php_ini_perdir 在 php expose_php 1 仅可在 php.ini 中配置。
zend.ze1_compatibility_mode 0 php_ini_all 从 php 5.0.0 起可用。
以下是配置选项的简要解释。
short_open_tag boolean
决定是否允许使用 php 代码开始标志的缩写形式( ?>)。如果要和 xml 结合使用 php,可以禁用此选项以便于嵌入使用 。否则还可以通过 php 来输出,例如:注: 本指令也会影响到缩写形式 =,它和 echo 等价。使用此缩写需要 short_open_tag 的值为 on。
asp_tags boolean
除了通常的 标志之外还允许使用 asp 风格的标志 。这也包括了输出变量值的缩写 。更多信息见从 html 中分离一节。
注: asp 风格标志的支持是 3.0.4 版新加的。
precision integer
浮点数中显示有效数字的位数。
y2k_compliance boolean
强制 2000 年兼容(在不兼容的浏览器中会出问题)。
allow_call_time_pass_reference boolean
是否启用在函数调用时强制参数被按照引用传递。此方法已不被赞成并在 php/zend 未来的版本中很可能不再支持。鼓励使用的方法是在函数定义中指定哪些参数应该用引用传递。鼓励大家尝试关闭此选项并确保脚本能够正常运行,以确保该脚本也能在未来的版本中运行(每次使用此特性都会收到一条警告,参数会被按值传递而不是按照引用传递)。
在函数调用时通过引用传递参数是不推荐的,因为它影响到了代码的整洁。如果函数的参数没有声明作为引用传递,函数可以通过未写入文档的方法修改其参数。要避免其副作用,最好仅在函数声明时指定那个参数需要通过引用传递。
参见引用的解释。
expose_php boolean
决定是否暴露 php 被安装在服务器上(例如在 web 服务器的信息头中加上其签名)。没有任何安全上的威胁,只是让客户端能够知道是否在服务器中安装了 php。
zend.ze1_compatibility_mode boolean
启用 zend 引擎 1 (php 4) 兼容模式。这影响到了对象的复制、构造及比较。
参见从 php 4 移植到 php 5。
资源限制
表格 g-5. 资源限制
名称 默认值 可修改范围 更新记录
memory_limit 8m php_ini_all
以下是配置选项的简要解释。
memory_limit integer
本指令设定了一个脚本所能够申请到的最大内存字节数。这有助于防止写得不好的脚本消耗光服务器上的可用内存。要使用此指令必须在编译的时候激活。因此 configure 一行中应该包括:--enable-memory-limit。如果不需要任何内存上的限制,必须将其设为 -1。
自 4.3.2 起,当激活了 memory_limit,php 函数 memory_get_usage() 便可以使用了。
当使用 integer 类型时,其值以字节为度量单位。还可以用简化符号,说明见此 faq。
see also: max_execution_time.
数据处理
表格 g-6. 数据处理配置选项
名称 默认值 可修改范围 更新记录
track_vars on php_ini_
arg_separator.output & php_ini_all 从 php 4.0.5 起可用。
arg_separator.input & php_ini_perdir 从 php 4.0.5 起可用。
variables_order egpcs php_ini_all
auto_globals_jit 1 php_ini_perdir 从 php 5.0.0 起可用。
register_globals 0 php_ini_perdir 在 php register_argc_argv 1 php_ini_perdir 在 php register_long_arrays 1 php_ini_perdir 从 php 5.0.0 起可用。
post_max_size 8m php_ini_perdir 在 php gpc_order gpc php_ini_all
auto_prepend_file null php_ini_perdir 在 php auto_append_file null php_ini_perdir 在 php default_mimetype text/html php_ini_all
default_charset php_ini_all
always_populate_raw_post_data 0 php_ini_perdir 在 php allow_webdav_methods 0 php_ini_perdir
以下是配置选项的简要解释。
track_vars boolean
如果激活,则环境变量,get,post,cookie 和 server 变量都能够分别在全局关联数组中找到:$_env,$_get,$_post,$_cookie 和 $_server。
注意自 php 4.0.3 起,track_vars 总是打开的。
arg_separator.output string
php 所产生的 url 中来分隔参数的分隔符。
arg_separator.input string
php 用来将 url 解析为变量的分隔符列表。
注: 本指令中的每个字符都会被当成分隔符!
variables_order string
设定 egpcs(environment,get,post,cookie,server)变量解析的顺序。默认设定为“egpcs”。举例说,将其设为“gp”,会导致 php 完全忽略环境变量,cookies 和 server 变量,并用 get 方法的变量覆盖 post 方法的同名变量。
参见 register_globals。
auto_globals_jit boolean
启用后,server 和 env 变量在他们第一次使用后 (just in time) 便被创建,而不是等到脚本开始运行时。如果这些变量没有在脚本总使用,启用这个变量会提高服务器性能。
要使此选项有效,php 配置选项 register_globals, register_long_arrays, 和 register_argc_argv 必须禁用。
register_globals boolean
决定是否将 egpcs(environment,get,post,cookie,server)变量注册为全局变量。
php 4.2.0 开始,本选项默认为 off。
相关信息请阅读安全一章中的使用 register_globals。
请注意 register_globals 不能在运行时设定(ini_set()),尽管如以上说明在主机允许时可以用 .htaccess。一个 .htaccess 项目的例子:php_flag register_globals off。
注: register_globals 受 variables_order 选项的影响。
register_argc_argv boolean
决定 php 是否定义 argv & argc 变量(可能包含有 get 信息)。
参见命令行方式。此外,本选项自 php 4.0.0 起可用,在此之前总是“on”。
register_long_arrays boolean
设定 php 是否注册已过时的 $http_*_vars 之类的预定义变量。如果为 on(默认值),则类似 $http_get_vars 的 php 变量会被注册。如果不使用,为性能考虑建议关闭此选项,而使用超全局数组例如 $_get 替代之。
本指令自 php 5.0.0 起可用。
post_max_size integer
设定 post 数据所允许的最大大小。此设定也影响到文件上传。要上传大文件,该值必须大于 upload_max_filesize。
如果配置脚本中激活了内存限制,memory_limit 也会影响文件上传。通常说,memory_limit 应该比 post_max_size 要大。
当使用 integer 类型时,其值以字节为度量单位。还可以用简化符号,说明见此 faq。
如果 post 数据尺寸大于 post_max_size $_post 和 $_files superglobals 便会为空。这可以以多种方式证明,例如,传递 $_get 变量到脚本以处理数据, 也就是
, 然后查看 $_get['processed'] 是否被设置。 gpc_order string
设定 get/post/cookie 变量解析的顺序,默认为“gpc”。举例说,将其设为“gp”,会导致 php 完全忽略 cookie 变量,并用 get 方法的变量覆盖 post 方法的同名变量。
注: 本选项不能用于 php 4。用 variables_order 替代之。
auto_prepend_file string
指定在主文件之前自动解析的文件名。该文件就像调用了 include() 函数一样被包含进来,因此会使用 include_path。
特殊值 none 禁止了自动前缀。
auto_append_file string
指定在主文件之后自动解析的文件名。该文件就像调用了 include() 函数一样被包含进来,因此会使用 include_path。
特殊值 none 禁止了自动后缀。
注: 如果脚本通过 exit() 终止,则自动后缀不会发生。
default_mimetype string
default_charset string
自 4.0b4 起,php 总是默认在 http 信息头 content-type: 中输出字符编码。要禁止发送字符集,将本选项设为空即可。
always_populate_raw_post_data boolean
总是产生 $http_raw_post_data 变量包含有原始的 post 数据。否则,此变量仅在碰到未识别 mime 类型的数据时产生。不过,访问原始 post 数据的更好方法是 php://input。$http_raw_post_data 对于 enctype=multipart/form-data 表单数据不可用。
allow_webdav_methods boolean
允许在 php 脚本中处理 webdav 的 http 请求(例如 propfind,proppatch,move,copy 等)。此选项在 php 4.3.2 以后便不存在了。如果要取得这些请求的 post 数据,也要设定 always_populate_raw_post_data。
参见 magic_quotes_gpc,magic-quotes-runtime 和 magic_quotes_sybase。
路径和目录
表格 g-7. 路径和目录配置选项
名称 默认值 可修改范围 更新记录
include_path .;/path/to/php/pear php_ini_all
doc_root null php_ini_system
user_dir null php_ini_system
extension_dir /path/to/php php_ini_system
cgi.fix_pathinfo 1 php_ini_all
cgi.force_redirect 1 php_ini_all
cgi.redirect_status_env null php_ini_all
fastcgi.impersonate 0 php_ini_all
cgi.rfc2616_headers 0 php_ini_all
以下是配置选项的简要解释。
include_path string
指定一组目录用于 require(),include() 和 fopen_with_path() 函数来寻找文件。格式和系统的 path 环境变量类似:一组目录的列表,在 unix 下用冒号分隔,在 windows 下用分号分隔。
例子 g-1. unix include_path
include_path=.:/php/includes
例子 g-2. windows include_path
include_path=.;c:/php/includes
在包含路径中使用 . 可以允许相对路径,它代表当前目录。
doc_root string
php 在服务器上的根目录。仅在非空时使用。如果 php 被配置为安全模式,则此目录之外的文件一概不被解析。如果 php 编译时没有指定 force_redirect,并且在任何 web 服务器(除了 iis)中以 cgi 方式运行 php,则应该设定 doc_root。替代方案是使用下面的 cgi.force_redirect 配置选项。
user_dir string
在用户目录之下使用 php 文件的基本目录名,例如 public_html。
extension_dir string
php 用来寻找动态连接扩展库的目录。参见 enable_dl 和 dl()。
extension string
当 php 启动时所加载的动态连接扩展库。
cgi.fix_pathinfo boolean
对 cgi 提供了真正的 path_info/path_translated 支持。以前 php 的行为是将 path_translated 设为 script_filename,而不管 path_info 是什么。有关 path_info 的更多信息见 cgi 规格。将此值设为 1 将使 php cgi 修正其路径以遵守规格。设为 0 将使 php 的行为和从前一样。默认为零。用户应该修正其脚本使用 script_filename 而不是 path_translated。
cgi.force_redirect boolean
在大多数 web 服务器中以 cgi 方式运行 php 时很有必要用 cgi.force_redirect 提供安全。php 默认其为 on。可以将其关闭,但风险自担。
注: windows 用户:可以安全地在 iis 之下将其关闭,事实上必须这么做。要在 omnihttpd 或 xitami 之下使用也必须将其关闭。
cgi.redirect_status_env string
如果打开了 cgi.force_redirect,并且不是在 apache 或 netscape(iplanet)web 服务器之下运行,可能需要设定一个环境变量名,php 将去寻找它来知道可以继续执行下去。
注: 设定此变量可能会导致安全问题,首先要知道自己在做什么。
fastcgi.impersonate string
iis(在基于 winnt 的操作系统上)中的 fastcgi 支持模仿客户端安全令牌的能力。这使得 iis 能够定义运行时所基于的请求的安全上下文。apache 中的 mod_fastcgi 不支持此特性(03/17/2002)。如果在 iis 中运行则设为 1。默认为 0。
cgi.rfc2616_headers int
指定 php 在发送 http 响应代码时使用何种报头。如果设定为 0,php 发送一个 status: 报头,apache 和其它 web server 都支持。如果此选项设定为 1,php 将发送 rfc 2616 兼容的报头。除非你知道自己在做什么,否则保留其值为 0。
文件上传
表格 g-8. 文件上传配置选项
名称 默认值 可修改范围 更新记录
file_uploads 1 php_ini_system 在 php upload_tmp_dir null php_ini_system
upload_max_filesize 2m php_ini_perdir 在 php
以下是配置选项的简要解释。
file_uploads boolean
是否允许 http 文件上传。参见 upload_max_filesize,upload_tmp_dir 和 post_max_size 指令。
当使用 integer 类型时,其值以字节为度量单位。还可以用简化符号,说明见此 faq。
upload_tmp_dir string
文件上传时存放文件的临时目录。必须是 php 进程所有者用户可写的目录。如果未指定则 php 使用系统默认值。
upload_max_filesize integer
所上传的文件的最大大小。
当使用 integer 类型时,其值以字节为度量单位。还可以用简化符号,说明见此 faq。
普通 sql
表格 g-9. 普通 sql 配置选项
名称 默认值 可修改范围 更新记录
sql.safe_mode 0 php_ini_system
以下是配置选项的简要解释。
sql.safe_mode boolean
调试器配置选项
注意
仅 php 3 实现了一个默认的调试器。更多信息请参考附录 e。
debugger.host string
调试器所使用的主机的 dns 名或 ip 地址。
debugger.port string
调试器所用的端口号。
debugger.enabled boolean
是否启用调试器。