1
0
mirror of https://github.com/php/doc-zh.git synced 2026-04-29 03:03:14 +02:00
Files
Luffy fcd98f0836 Fix syntax errors in more examples (#969)
* Fix syntax errors in more examples

* Add new PHP ini settings for zend.max_allowed_stack_size, zend.reserved_stack_size, and fiber.stack_size

* sync commit id
2025-03-19 15:00:06 +08:00

416 lines
13 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: b1116af46680f7baf89c46610430a3b63ce9a1f0 Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi, Luffy -->
<section xml:id="info.configuration" xmlns="http://docbook.org/ns/docbook">
&reftitle.runtime;
&extension.runtime;
<para>
<table>
<title>PHP 选项 / Info 配置选项</title>
<tgroup cols="4">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Default;</entry>
<entry>&Changeable;</entry>
<entry>&Changelog;</entry>
</row>
</thead>
<tbody>
<row>
<entry><link linkend="ini.assert.active">assert.active</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>
自 PHP 8.3.0 起弃用
</entry>
</row>
<row>
<entry><link linkend="ini.assert.bail">assert.bail</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>
自 PHP 8.3.0 起弃用
</entry>
</row>
<row>
<entry><link linkend="ini.assert.warning">assert.warning</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>
自 PHP 8.3.0 起弃用
</entry>
</row>
<row>
<entry><link linkend="ini.assert.callback">assert.callback</link></entry>
<entry>NULL</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>
自 PHP 8.3.0 起弃用
</entry>
</row>
<row>
<entry><link linkend="ini.assert.quiet-eval">assert.quiet_eval</link></entry>
<entry>"0"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>从 PHP 8.0.0 移除</entry>
</row>
<row>
<entry><link linkend="ini.assert.exception">assert.exception</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry>在 PHP 8.0.0 之前,默认是 <literal>"0"</literal>,自 PHP 8.3.0 起弃用</entry>
</row>
<row>
<entry><link linkend="ini.enable-dl">enable_dl</link></entry>
<entry>"1"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry>&removed.php.future;</entry>
</row>
<row>
<entry><link linkend="ini.max-execution-time">max_execution_time</link></entry>
<entry>"30"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.max-input-time">max_input_time</link></entry>
<entry>"-1"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.max-input-nesting-level">max_input_nesting_level</link></entry>
<entry>"64"</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.max-input-vars">max_input_vars</link></entry>
<entry>1000</entry>
<entry><constant>INI_PERDIR</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.zend.enable-gc">zend.enable_gc</link></entry>
<entry>"1"</entry>
<entry><constant>INI_ALL</constant></entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.zend.max-allowed-stack-size">zend.max_allowed_stack_size</link></entry>
<entry>"0"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry>自 PHP 8.3.0 起可用。</entry>
</row>
<row>
<entry><link linkend="ini.zend.reserved-stack-size">zend.reserved_stack_size</link></entry>
<entry>"0"</entry>
<entry><constant>INI_SYSTEM</constant></entry>
<entry>自 PHP 8.3.0 起可用。</entry>
</row>
<row>
<entry><link linkend="ini.fiber.stack-size">fiber.stack_size</link></entry>
<entry></entry>
<entry><constant>INI_ALL</constant></entry>
<entry>自 PHP 8.1.0 起可用。</entry>
</row>
</tbody>
</tgroup>
</table>
&ini.php.constants;
</para>
&ini.descriptions.title;
<para>
<variablelist>
<varlistentry xml:id="ini.assert.active">
<term>
<parameter>assert.active</parameter>
<type>bool</type>
</term>
<listitem>
<para>
激活 <function>assert</function> 断言评测。应该使用 <link
linkend="ini.zend.assertions">zend.assertions</link> 来控制 <function>assert</function> 的行为。
</para>
&warn.deprecated.feature-8-3-0;
</listitem>
</varlistentry>
<varlistentry xml:id="ini.assert.bail">
<term>
<parameter>assert.bail</parameter>
<type>bool</type>
</term>
<listitem>
<para>
失败的断言将中止脚本。
</para>
&warn.deprecated.feature-8-3-0;
</listitem>
</varlistentry>
<varlistentry xml:id="ini.assert.warning">
<term>
<parameter>assert.warning</parameter>
<type>bool</type>
</term>
<listitem>
<para>
为每个失败的断言产生一条 PHP 警告信息。
</para>
&warn.deprecated.feature-8-3-0;
</listitem>
</varlistentry>
<varlistentry xml:id="ini.assert.callback">
<term>
<parameter>assert.callback</parameter>
<type>string</type>
</term>
<listitem>
<para>
断言失败后要调用的回调函数。
</para>
&warn.deprecated.feature-8-3-0;
</listitem>
</varlistentry>
<varlistentry xml:id="ini.assert.quiet-eval">
<term>
<parameter>assert.quiet_eval</parameter>
<type>bool</type>
</term>
<listitem>
&warn.feature.removed-8-0-0;
<para>
在断言表达式执行时 <function>error_reporting</function> 使用当前的设置。如果启用了,在执行时错误将不会被显示(隐式的
error_reporting(0))。如果禁用了,错误将根据 <function>error_reporting</function> 的设置来显示。
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.assert.exception">
<term>
<parameter>assert.exception</parameter>
<type>bool</type>
</term>
<listitem>
<para>
在断言(assert)失败时产生 <classname>AssertionError</classname> 异常。
</para>
&warn.deprecated.feature-8-3-0;
</listitem>
</varlistentry>
<varlistentry xml:id="ini.enable-dl">
<term>
<parameter>enable_dl</parameter>
<type>bool</type>
</term>
<listitem>
<para>
该指令允许开启或关闭使用 <function>dl</function> 动态加载 PHP 模块。
</para>
<para>
关闭动态加载的主要原因是为了安全。通过动态加载,有可能忽略所有
<link linkend="ini.open-basedir">open_basedir</link> 限制。默认允许动态加载。
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.max-execution-time">
<term>
<parameter>max_execution_time</parameter>
<type>int</type>
</term>
<listitem>
<para>
这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。这有助于防止写得不好的脚本占尽服务器资源。默认设置为
<literal>30</literal>。从<link linkend="features.commandline">命令行</link>运行 PHP
时,默认设置为 <literal>0</literal>
</para>
<para>
在非 Windows 系统上,最大执行时间不会影响系统调用和系统操作等。更多细节参见 <function>set_time_limit</function>
</para>
<para>
你的 web 服务器也可以有其他超时设置,也有可能中断 PHP 的执行。Apache 有一个
<literal>Timeout</literal> 指令,IIS 有一个 CGI 超时功能。他们默认都是
300 秒。更多具体信息参见你的 web 服务器的文档。
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.max-input-time">
<term>
<parameter>max_input_time</parameter>
<type>int</type>
</term>
<listitem>
<para>
脚本解析输入数据(类似 POST 和 GET)允许的最大时间,单位是秒。它从接收所有数据到开始执行脚本进行测量的。默认设置为
<literal>-1</literal>,意味着使用 <link linkend="ini.max-execution-time">max_execution_time</link>
的值做为默认值,如果不想限制,请设置为 <literal>0</literal>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.max-input-nesting-level">
<term>
<parameter>max_input_nesting_level</parameter>
<type>int</type>
</term>
<listitem>
<para>
设置 <link linkend="language.variables.external">输入变量</link>
的最大允许嵌套的深度。(例如 <varname>$_GET</varname><varname>$_POST</varname>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.max-input-vars">
<term>
<parameter>max_input_vars</parameter>
<type>int</type>
</term>
<listitem>
<para>
接受多少 <link linkend="language.variables.external">输入的变量</link>(限制分别应用于 $_GET、$_POST 和
$_COOKIE 超全局变量)指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。如有超过指令指定数量的输入变量,将会导致
<constant>E_WARNING</constant> 的产生,更多的输入变量将会从请求中截断。
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.zend.enable-gc">
<term>
<parameter>zend.enable_gc</parameter>
<type>bool</type>
</term>
<listitem>
<para>
启用或禁用循环引用记数收集器。
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.zend.max-allowed-stack-size">
<term>
<parameter>zend.max_allowed_stack_size</parameter>
<type>int</type>
</term>
<listitem>
<para>
程序允许消耗的操作系统原生堆栈空间的最大值。
尝试消耗超过操作系统允许的堆栈空间通常会导致硬崩溃,没有易于获得的调试信息。
为了使调试更容易,引擎在发生之前(当程序使用超过
<link linkend="ini.zend.max-allowed-stack-size">zend.max_allowed_stack_size</link>-<link linkend="ini.zend.reserved-stack-size">zend.reserved_stack_size</link>
字节的堆栈时)抛出一个
<classname>Error</classname>
</para>
<para>
用户定义代码中的递归不会消耗原生堆栈空间。
但是,内部函数和魔术方法会。
涉及这些函数的非常深的递归可能会导致程序耗尽所有可用的原生堆栈空间。
</para>
<para>
可能的值为:
<simplelist>
<member>
<literal>0</literal>
自动检测操作系统允许程序消耗的最大原生堆栈空间。
这是默认值。
当无法检测时,使用已知的系统默认值。
</member>
<member>
<literal>-1</literal>
禁用引擎中的堆栈大小检查。
</member>
<member>
正整数:固定大小,以字节为单位。
设置此值过高会导致与禁用堆栈大小检查相同的效果。
</member>
</simplelist>
</para>
<para>
由于 <link linkend="language.fibers">Fiber</link> 的堆栈大小由
<link linkend="ini.fiber.stack-size">fiber.stack_size</link> 决定,
在执行 Fiber 时检查堆栈使用情况时,使用此参数的值而不是
<link linkend="ini.zend.max-allowed-stack-size">zend.max_allowed_stack_size</link>
</para>
<note>
<para>
这与堆栈 <emphasis>缓冲区</emphasis> 溢出无关,也不是安全功能。
</para>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.zend.reserved-stack-size">
<term>
<parameter>zend.reserved_stack_size</parameter>
<type>int</type>
</term>
<listitem>
<para>
保留的堆栈大小,以字节为单位。
在检查堆栈大小时,从
<link linkend="ini.zend.max-allowed-stack-size">max allowed stack size</link>
减去此值作为缓冲区。
</para>
<para>
可能的值为:
<simplelist>
<member>
<literal>0</literal>:自动检测合理大小。
</member>
<member>
正整数:固定大小,以字节为单位。
</member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.fiber.stack-size">
<term>
<parameter>fiber.stack_size</parameter>
<type>int</type>
</term>
<listitem>
<para>
为每个 <link linkend="language.fibers">Fiber</link> 分配的本地堆栈大小,以字节为单位。
</para>
<para>
默认值是系统指针大小小于 8 字节的系统上的 1MiB,否则为 2MiB。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->