运行时配置

这些函数的行为受 php.ini 中的设置影响。

PHP 选项/Inf 配置选项
名字 默认 可修改范围 更新日志
assert.active "1" PHP_INI_ALL  
assert.bail "0" PHP_INI_ALL  
assert.warning "1" PHP_INI_ALL  
assert.callback NULL PHP_INI_ALL  
assert.quiet_eval "0" PHP_INI_ALL  
assert.exception "0" PHP_INI_ALL Available since PHP 7.0.0.
enable_dl "1" PHP_INI_SYSTEM 本过时特性肯定会在未来被移除
max_execution_time "30" PHP_INI_ALL  
max_input_time "-1" PHP_INI_PERDIR 自 PHP 4.3.0 起有效。
max_input_nesting_level "64" PHP_INI_PERDIR 自 PHP 4.4.8 and PHP 5.2.3 起有效。
max_input_vars 1000 PHP_INI_PERDIR 自 PHP 5.3.9 起有效。
magic_quotes_gpc "1" PHP_INI_PERDIR 在 PHP <= 4.2.3 是 PHP_INI_ALL,在 PHP 5.4.0 中被移除。
magic_quotes_runtime "0" PHP_INI_ALL 在 PHP 5.4.0 中移除
zend.enable_gc "1" PHP_INI_ALL 自 PHP 5.3.0 起有效。
有关 PHP_INI_* 样式的更多详情与定义,见 配置可被设定范围

这是配置指令的简短说明。

assert.active boolean

激活 assert() 断言评测。

assert.bail boolean

失败的断言将中止脚本。

assert.warning boolean

为每个失败的断言产生一条 PHP 警告信息

assert.callback string

失败的断言将调用用户的函数

assert.quiet_eval boolean

在 断言表达式执行时 error_reporting() 使用当前的设置。 如果启用了,在执行时错误将不会被显示(隐式的 error_reporting(0))。 如果禁用了,错误将根据 error_reporting() 的设置来显示。

assert.exception boolean

在断言(assert)失败时产生 AssertionError 异常。

enable_dl boolean

该指令仅对 Apache 模块版本的 PHP 有效。 你可以针对每个虚拟机或每个目录开启或关闭 dl() 动态加载 PHP 模块。

关闭动态加载的主要原因是为了安全。通过动态加载,有可能忽略所有 open_basedir 限制。 默认允许动态加载,除了使用 安全模式。在 安全模式,总是无法使用 dl()

max_execution_time integer

这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。 这有助于防止写得不好的脚本占尽服务器资源。 默认设置为 30。 从命令行运行 PHP 时,默认设置为 0

最大执行时间不会影响系统调用和系统操作等。更多细节参见 set_time_limit()

安全模式 下你不能通过 ini_set() 来修改此设置。 唯一的解决方法是关闭安全模式或者在 php.ini 中修改时间限制。

你的 web 服务器也可以有其他超时设置,也有可能中断 PHP 的执行。 Apache 有一个 Timeout 指令,IIS 有一个 CGI 超时功能。 他们默认都是 300 秒。更多具体信息参见你的 web 服务器的文档。

max_input_time integer

脚本解析输入数据(类似 POST 和 GET)允许的最大时间,单位是秒。 它从接收所有数据到开始执行脚本进行测量的。

max_input_nesting_level integer

设置输入变量的嵌套深度 (例如 $_GET$_POST……)

max_input_vars integer

接受多少 输入的变量(限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量) 指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。 如有超过指令指定数量的输入变量,将会导致 E_WARNING 的产生, 更多的输入变量将会从请求中截断。

magic_quotes_gpc boolean
Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除

为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes 为 on,所有的 ' (单引号)、" (双引号)、\(反斜杠)和 NUL's 被一个反斜杠自动转义。

Note:

在 PHP 4,$_ENV也会被转义。

Note:

如果 magic_quotes_sybase 也是 ON,它会完全覆盖 magic_quotes_gpc。 两个指令都启用意味着只有单引号被转义为 ''。 双引号、反斜杠和 NUL's 不会被转义。

See also get_magic_quotes_gpc()

magic_quotes_runtime boolean
Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除

如果启用了 magic_quotes_runtime,大多数返回任何形式外部数据的函数,包括数据库和文本段将会用反斜线转义引号。 如果启用了 magic_quotes_sybase,单引号会被单引号转义而不是反斜线。

magic_quotes_runtime 影响的函数(不包括 PECL 里的函数):

zend.enable_gc boolean

启用或禁用循环引用记数搜集器。

add a note add a note

User Contributed Notes 4 notes

up
21
rubo77
6 years ago
I think it is important to mention that some distributions apply bugfixes for older versions so "Available since PHP 5.3.9" is not reliable, for example:
debian squeeze implemented the directive max_input_vars in PHP 5.3.3-7+squeeze7 (see http://ftp-master.metadata.debian.org/changelogs/main/p/php5/php5_5.3.3-7+squeeze17_changelog )
up
1
csongor at halmai dot hu
2 months ago
The max_input_vars setting is defined as "How many input variables may be accepted" but this is not completely correct. There is a +1 factor.

For example, if the value is 2 then the $_POST array can have up to 3 elements, if it is 1000 then it can have 1001 elements, and so on.

I want to stop the execution of the php code when there is a chance that some data was not received. Therefore, instead of relying on the standard E_WARNING, I do this in my code.

<?php
$max_input_vars
= ini_get('max_input_vars');
if (
count($_POST) === $max_input_vars + 1) {   // note the +1 here
   
throw new Exception();
}
?>

If the size of the $_POST array reaches the maximum then there is the chance that there was more data so it is better to stay on the safe side and increase the config value.
up
-4
horst at pepperzak.com
9 years ago
Caution: Although magic_quotes_gpc is flagged as dreprecated the default value is still "ON". So you will explicitly have to put

magic_quotes_gpc = Off

into your php.ini. Commeting out the magic_quotes_gpc-line will not turn magic_quotes_gpc off.
up
-86
Anonymous
6 years ago
The max_input_vars limit can be overcome by reading the input in raw, i.e.:
<?php
  $sRawInputData
= fopen( 'php://input' );
?>
To Top