【转】php.ini 核心配置选项描述

 

 

 

表格 H-3. Httpd 选项

名称默认值修改权限更新记录
async_send"0"PHP_INI_ALL 

 

 

 

表格 H-4. 语言和杂类配置选项

名称默认值修改权限更新记录
short_open_tag"1"PHP_INI_PERDIR在 PHP <= 4.0.0 时是 PHP_INI_ALL。
asp_tags"0"PHP_INI_PERDIR在 PHP <= 4.0.0 时是 PHP_INI_ALL。
precision"14"PHP_INI_ALL 
y2k_compliance"1"PHP_INI_ALL 
allow_call_time_pass_reference"1"PHP_INI_PERDIR在 PHP <= 4.0.0 时是 PHP_INI_ALL。
expose_php"1"仅可在 php.ini 中配置。 
zend.ze1_compatibility_mode"0"PHP_INI_ALL从 PHP 5.0.0 起可用。

 

以下是该配置选项的简要解释。

 

 

short_open_tag  boolean

决定是否允许使用 PHP 代码开始标志的缩写形式(<? ?>)。如果要和 XML 结合使用 PHP,可以禁用此选项以便于嵌入使用 <?xml ?>。否则还可以通过 PHP 来输出,例如:<?php echo '<?xml version="1.0"'; ?>。如果禁用了,必须使用 PHP 代码开始标志的完整形式(<?php ?>)。

注: 本指令也会影响到缩写形式 <?=,它和 <? echo 等价。使用此缩写需要 short_open_tag 的值为 On。

asp_tags  boolean

除了通常的 <?php ?> 标志之外还允许使用 ASP 风格的标志 <% %>。这也包括了输出变量值的缩写 <%= $value %>。更多信息见从 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

 

 

表格 H-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.

 

表格 H-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 <= 4.2.3 时是 PHP_INI_ALL。
register_argc_argv"1"PHP_INI_PERDIR在 PHP <= 4.2.3 时是 PHP_INI_ALL。
register_long_arrays"1"PHP_INI_PERDIR从 PHP 5.0.0 起可用。
post_max_size"8M"PHP_INI_PERDIR在 PHP <= 4.2.3 时是 PHP_INI_ALL。从 PHP 4.0.3 起可用。
gpc_order"GPC"PHP_INI_ALL 
auto_prepend_fileNULLPHP_INI_PERDIR在 PHP <= 4.2.3 时是 PHP_INI_ALL。
auto_append_fileNULLPHP_INI_PERDIR在 PHP <= 4.2.3 时是 PHP_INI_ALL。
default_mimetype"text/html"PHP_INI_ALL 
default_charset""PHP_INI_ALL 
always_populate_raw_post_data"0"PHP_INI_PERDIR在 PHP <= 4.2.3 时是 PHP_INI_ALL。从 PHP 4.1.0 起可用。
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_globalsregister_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 变量到脚本以处理数据, 也就是 <form action="edit.php?processed=1">, 然后查看 $_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 变量。

allow_webdav_methods  boolean

允许在 PHP 脚本中处理 WebDAV 的 HTTP 请求(例如 PROPFIND,PROPPATCH,MOVE,COPY 等)。此选项在 PHP 4.3.2 以后便不存在了。如果要取得这些请求的 POST 数据,也要设定always_populate_raw_post_data

 

参见 magic_quotes_gpcmagic-quotes-runtime 和 magic_quotes_sybase

 

表格 H-7. 路径和目录配置选项

名称默认值修改权限更新记录
include_path".;/path/to/php/pear"PHP_INI_ALL 
doc_rootNULLPHP_INI_SYSTEM 
user_dirNULLPHP_INI_SYSTEM 
extension_dir"/path/to/php"PHP_INI_SYSTEM 
cgi.fix_pathinfo"0"PHP_INI_SYSTEM 
cgi.force_redirect"1"PHP_INI_SYSTEM 
cgi.redirect_status_env""PHP_INI_SYSTEM 
fastcgi.impersonate"0"PHP_INI_SYSTEM 
cgi.rfc2616_headers"0"PHP_INI_SYSTEM 

 

以下是该配置选项的简要解释。

 

 

include_path  string

指定一组目录用于 require()include() 和 fopen_with_path() 函数来寻找文件。格式和系统的 PATH 环境变量类似:一组目录的列表,在 UNIX 下用冒号分隔,在 Windows 下用分号分隔。

例子 H-1. Unix include_path

include_path=".:/php/includes"

例子 H-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。

 

 

表格 H-8. 文件上传配置选项

名称默认值修改权限更新记录
file_uploads"1"PHP_INI_SYSTEM在 PHP <= 4.2.3 时是 PHP_INI_ALL。从 PHP 4.0.3 起可用。
upload_tmp_dirNULLPHP_INI_SYSTEM 
upload_max_filesize"2M"PHP_INI_PERDIR在 PHP <= 4.2.3 时是 PHP_INI_ALL。

 

以下是该配置选项的简要解释。

 

 

file_uploads  boolean

是否允许 HTTP 文件上传。参见 upload_max_filesizeupload_tmp_dir 和 post_max_size 指令。

当使用 integer 类型时,其值以字节为度量单位。还可以用简化符号,说明见此 FAQ

upload_tmp_dir  string

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

upload_max_filesize  integer

所上传的文件的最大大小。

当使用 integer 类型时,其值以字节为度量单位。还可以用简化符号,说明见此 FAQ

 

 

表格 H-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

是否启用调试器

 

 

 

表格 42-1. 保安措施和安全模式配置指令

名称默认值作用范围
safe_mode"0"PHP_INI_SYSTEM
safe_mode_gid"0"PHP_INI_SYSTEM
safe_mode_include_dirNULLPHP_INI_SYSTEM
safe_mode_exec_dir""PHP_INI_SYSTEM
safe_mode_allowed_env_varsPHP_PHP_INI_SYSTEM
safe_mode_protected_env_varsLD_LIBRARY_PATHPHP_INI_SYSTEM
open_basedirNULLPHP_INI_SYSTEM
disable_functions""PHP_INI_SYSTEM
disable_classes""PHP_INI_SYSTEM
PHP_INI_* 常量的进一步详细说明与定义见   ini_set()

 

以下是该配置选项的简要解释。

 

 

safe_mode  boolean

是否启用 PHP 的安全模式。更多信息请阅读安全一章。

safe_mode_gid  boolean

默认情况下,安全模式在打开文件时会做 UID 比较检查。如果你想将其放宽到 GID 比较,则打开 safe_mode_gid。是否在文件访问时使用 UIDFALSE)或者 GIDTRUE)来做检查。

safe_mode_include_dir  string

当从此目录及其子目录(目录必须在 include_path 中或者用完整路径来包含)包含文件时越过 UID/GID 检查。

从 PHP 4.2.0 开始,本指令可以接受和 include_path 指令类似的风格用分号隔开的路径,而不只是一个目录。

指定的限制实际上是一个前缀,而非一个目录名。这也就是说“safe_mode_include_dir = /dir/incl”将允许访问“/dir/include”和“/dir/incls”,如果它们存在。如果您希望将访问控制在一个指定的目录,那么请在结尾加上一个斜线,例如:“safe_mode_include_dir = /dir/incl/”。

safe_mode_exec_dir  string

如果 PHP 使用了安全模式,system() 和其它执行系统程序的函数将拒绝启动不在此目录中的程序。

safe_mode_allowed_env_vars  string

设置某些环境变量可能是潜在的安全缺口。本指令包含有一个逗号分隔的前缀列表。在安全模式下,用户只能改变那些名字具有在这里提供的前缀的环境变量。默认情况下,用户只能设置以 PHP_ 开头的环境变量(例如 PHP_FOO = BAR)。

注: 如果本指令为空,PHP 将使用户可以修改任何环境变量!

safe_mode_protected_env_vars  string

本指令包含有一个逗号分隔的环境变量的列表,最终用户不能用 putenv() 来改变这些环境变量。甚至在 safe_mode_allowed_env_vars 中设置了允许修改时也不能改变这些变量。

open_basedir  string

将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。本指令不受安全模式打开或者关闭的影响。

当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时,该文件的位置将被检查。当文件在指定的目录树之外时 PHP 将拒绝打开它。所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。

特殊值 . 指定了存放该脚本的目录将被当做基准目录。

在 Windows 中,用分号分隔目录。在任何其它系统中用冒号分隔目录。作为 Apache 模块时,父目录中的 open_basedir 路径自动被继承。

用 open_basedir 指定的限制实际上是前缀,不是目录名。也就是说 "open_basedir = /dir/incl" 也会允许访问 "/dir/include" 和 "/dir/incls",如果它们存在的话。如果要将访问限制在仅为指定的目录,用斜线结束路径名。例如:"open_basedir = /dir/incl/"。

注: 支持多个目录是 3.0.7 加入的。

默认是允许打开所有文件。

disable_functions  string

本指令允许你基于安全原因禁止某些函数。接受逗号分隔的函数名列表作为参数。 disable_functions 不受安全模式的影响。

本指令只能设置在 php.ini 中。例如你不能将其设置在 httpd.conf

disable_classes  string

本指令可以使你出于安全的理由禁用某些类。用逗号分隔类名。disable_classes 不受安全模式的影响。

本指令只能设置在 php.ini 中。例如你不能将其设置在 httpd.conf

可用性说明: 本指令自 PHP 4.3.2 起可用。

 

参见 register_globalsdisplay_errors 和 log_errors

当 safe_mode 设置为 on,PHP 将检查当前脚本的拥有者是否和将被文件函数操作的文件的拥有者相匹配。例如:

-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php
-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
运行 script.php
<?php
readfile
('/etc/passwd');
?>
如果安全模式被激活,则将会导致以下错误:
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

同时,或许会存在这样的环境,在该环境下,宽松的 GID 检查已经足够,但严格的 UID 检查反而是不适合的。您可以用 safe_mode_gid 选项来控制这种检查。如果设置为 On 则进行宽松的 GID 检查;设置为 Off(默认值)则进行 UID 检查。

除了 safe_mode 以外,如果您设置了 open_basedir 选项,则所有的文件操作将被限制在您指定的目录下。例如:

<Directory /docroot>
  php_admin_value open_basedir /docroot
</Directory>
如果您在设置了  open_basedir 选项后运行同样的 script.php,则其结果会是:
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2

您也可以单独地屏蔽某些函数。请注意 disable_functions 选项不能在 php.ini 文件外部使用,也就是说您无法在 httpd.conf 文件的按不同虚拟主机或不同目录的方式来屏蔽函数。 如果我们将如下内容加入到 php.ini 文件:

disable_functions readfile,system
则我们会得到如下的输出:
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2

 

 

更多选项请参见:http://man.chinaunix.net/develop/php/php_manual_zh/html/ini.html#ini.list

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值