附录A php.ini配置项说明

下面给出的配置项仅为核心配置项,其他模块的配置项请参考官方文档。默认值均为 PHP 源码中定义配置项时的默认值,不是 php.ini 文件的默认值。

[PHP]相关配置

(1)engine

配置项:on、off。

默认值:on。

可修改范围:PHP_INI_ALL。

说明:设置打开或关闭 PHP 解析。本指令仅在使用 PHP 的 Apache 模块版本时才有用。可以基于目录或者虚拟主机来打开或者关闭 PHP。例如:

php_admin_flag engine on

下面几个 Apache 指令可以使用户在 Apache 配置文件内部修改 PHP 的配置。

  1. php_value name value:设定指定的值,只能用于 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的指令。要清除先前设定的值,把 value 设为 none。不要用 php_value 设定布尔值,应该用 php_flag。

  2. php_flag name on|off:用来设定布尔值的配置指令,仅能用于 PHP_INI_ALL 和 PHP_INI_PERDIR 类型的指令。

  3. php_admin_value name value:设定指定的指令的值,不能用于 .htaccess 文件。任何用 php_admin_value 设定的指令都不能被 .htaccess 或 virtualhost 中的指令覆盖。要清除先前设定的值,把 value 设为 none。

  4. php_admin_flag name on|off:用来设定布尔值的配置指令,不能用于 .htaccess 文件。任何用 php_admin_flag 设定的指令都不能被 .htaccess 或 virtualhost 中的指令覆盖。

(2)short_open_tag

配置项:on、off。

默认值:on。

可修改范围:PHP_INI_ALL。

说明:设置是否允许使用 PHP 代码开始标志的缩写形式 <? ? >,默认开启。这个特性是为了保持对前兼容而留下来的特性,除非为了兼容老版本的代码,否则不要使用该特性。Zend 引擎在编译 PHP 代码的时候和使用 readline 扩展进行可交互命令行程序开发的时候会做这个检测。

(3)precision

配置项:integer。

默认值:14。

可修改范围:PHP_INI_ALL。

说明:设置浮点型数据显示的有效位数,默认 14 位。代码如下:

ini_set('precision', 3);
echo 1.11111;
1.11

(4)output_buffering

配置项:on、off、integer(bytes)。

默认值:0。

可修改范围:PHP_INI_PERDIR。

说明:该选项设置为 on 时,将在所有的脚本中使用输出控制并且 buffer 无限制大小。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数,如果输出的内容超过限制的大小,那么 PHP 将按照限制的大小分块输出,CLI 下强制关闭。

(5)output_handler

配置项:其值只能设置为一个内置的函数名,如 mb_output_handler,函数只能设置一个。

默认值:null。

可修改范围:PHP_INI_PERDIR。

说明:该选项可将脚本所有的输出重定向到一个函数。

(6)zlib.output_compression

配置项:on、off、integer。

默认值:off。

可修改范围:PHP_INI_ALL。

说明:设置是否开启 gzip 压缩,开启的时候默认为 4KB。

(7)zlib.output_compression_level

配置项:integer。

默认值:-1。

可修改范围:PHP_INI_ALL。

说明:设置 gzip 压缩级别,默认为 -1,最高为 9,数字越大,压缩比越高,也越消耗 CPU。

(8)zlib.output_handler

配置项:string。

默认值:null。可修改范围:PHP_INI_ALL。说明:作用同 output_handler,但是不能同时开启。

(9)implicit_flush

配置项:on、off。

默认值:off。

可修改范围:PHP_INI_ALL。

说明:若该选项改为 true, PHP 将使输出层在每段信息块输出后自动刷新。这等同于在每次使用 print、echo 等函数或每个 HTML 块之后,调用 PHP 中的 flush 函数,CLI 下强制开启。

(10)unserialize_callback_func

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:当设置了该选项时,在反序列化一个字符串的时候,如果反序列化后的数据为一个对象,那么可以把当前对象还原成特定的 class 对象。例如:

test1.php
$serialized = 'O:1:"a":1:{s:5:"value"; s:3:"100"; }';
ini_set('unserialize_callback_func', 'mycallback');
function mycallback($classname)
{
    require "./{$classname}.php";
}
$res = unserialize($serialized);
print_r($res);

a.php
class A{
    public $test = 1;
}

(11)serialize_precision

配置项:integer。

默认值:-1。

可修改范围:PHP_INI_ALL。

说明:控制序列化浮点数时候的精度,默认为 -1,表示数据保持不变,类似 precision。

(12)open_basedir

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:限制 PHP 打开文件的目录。定义该配置后,PHP 将只能打开限定目录下的文件,包括文件本身;多个目录使用冒号(Windows 中使用分号)间隔。

该配置只匹配前缀,如果配置项为 /data,那么 /data1 或者 /data2 都是可以访问的,如果要限定某个特定目录,请使用 “/” 结尾,如 /data/。

(13)disable_functions

配置项:string。

默认值:''。

可修改范围:PHP_INI_SYSTEM。

说明:禁止执行某些函数,多个函数可以使用逗号间隔。PHP 扩展加载完成后,会根据这个配置项修改函数对应的 handler 为 zif_display_disabled_function,当执行这个函数的时候就会输出 %s() has been disabled for security reasons。对应代码如下:

ZEND_API ZEND_FUNCTION(display_disabled_function)
{
    zend_error(E_WARNING, "%s() has been disabled for security reasons", get_active_function_name());
}

(14)disable_classes

配置项:string。

默认值:''。

可修改范围:PHP_INI_SYSTEM。

说明:禁止执行某些类,多个类可以使用逗号间隔。PHP 扩展加载完成后,会根据这个配置项修改 class 对应的 create_handler 为 display_disabled_class,同时清空该 class 的 function_table,当初始化这个 class 的时候就会输出 %s() has been disabled for security reasons。对应代码如下:

static zend_object *display_disabled_class(zend_class_entry *class_type) /* {{{ */
{
        zend_object *intern;

        intern = zend_objects_new(class_type);
        zend_error(E_WARNING,  "%s()  has  been  disabled  for  security  reasons",
            ZSTR_VAL(class_type->name));
        return intern;
}

(15)highlight.string

配置项:string十六进制颜色码。

默认值:'#DD0000'。

可修改范围:PHP_INI_ALL。

说明:PHP 字符串语法高亮颜色配置。

(16)highlight.comment

配置项:string十六进制颜色码。

默认值:'#FF8000'。

可修改范围:PHP_INI_ALL。

说明:PHP 注释语法高亮颜色配置。

(17)highlight.keyword

配置项:string十六进制颜色码。

默认值:'#007700'。

可修改范围:PHP_INI_ALL。

说明:PHP 关键字语法高亮颜色配置。

(18)highlight.default

配置项:string十六进制颜色码。

默认值:'#0000BB'。

可修改范围:PHP_INI_ALL。

说明:PHP 默认文本语法高亮颜色配置。

(19)highlight.html

配置项:string十六进制颜色码。

默认值:'#000000'。

可修改范围:PHP_INI_ALL。

说明:PHP HTML语法高亮颜色配置。

(20)ignore_user_abort

配置项:on、off。

默认值:'0'。

可修改范围:PHP_INI_ALL。

说明:如果该选项设置为 true,在客户端断开连接后,脚本不会被中止运行。默认为 false。

(21)realpath_cache_size

配置项:integer。

默认值:'4096K'。

可修改范围:PHP_INI_SYSTEM。

说明:指定 realpath cache 的大小。PHP 为了防止过多的 include/require 造成频繁去 include_path 中寻找路径,把引用到的文件的真实路径都缓存到了 realpath_cache,以减少路径查找。

(22)realpath_cache_ttl

配置项:integer。

默认值:120。

可修改范围:PHP_INI_SYSTEM。

说明:指定 realpath cache 过期时间,单位为秒。

(23)zend.enable_gc

配置项:integer。

默认值:1。

可修改范围:PHP_INI_ALL。

说明:开启或关闭垃圾回收。

(24)zend.multibyte

配置项:integer。

默认值:0。

可修改范围:PHP_INI_PERDIR。

说明:开启或关闭多字符集编码。开启这个特性的时候必须要开启 mbstring。

<?php
declare(encoding="cp936");
echo("PHP是最好的语言");

// 设置为
mbstring.internal_encoding=cp936
$ php test.php

(25)zend.script_encoding

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:开启多字符集编码时的默认文件编码。若用 declare 声明编码,则优先使用 declare 声明的编码。

<? php
declare(encoding='ISO-8859-1'); // 优先ISO-8859-1 编码

(26)expose_php

配置项:boolen。

默认值:1。

可修改范围:PHP_INI_SYSTEM。

说明:设置是否对外暴露 PHP 的版本信息,在开启的情况下会在输出的 header 头中添加如下信息,不想开启的时候关闭即可。

X-Powered-By:PHP/7.1.4

(27)max_execution_time

配置项:integer。

默认值:30。

可修改范围:PHP_INI_ALL。

说明:设置 PHP 的最大执行时间,默认为 30 秒,CLI 下强制为 0,超时返回致命错误。当通过 set_time_limit 函数修改运行时间的时候,计数器从零重新开始计算超时时间,也就是说如果超时时间默认为 30 秒,在脚本执行的第 15 秒的时候设置脚本超时时间为 10 秒,那么脚本可运行 25 秒。

(28)max_input_time

配置项:integer。

默认值:-1。

可修改范围:PHP_INI_PERDIR。

说明:设置脚本解析输入数据(类似 POST 和 GET)允许的最大时间,单位为秒,CLI 下强制为 -1,表示不限制。

(29)max_input_nesting_level

配置项:integer。

默认值:64。

可修改范围:PHP_INI_PERDIR。

说明:设置输入变量的最大深度。例如,当这个值为2时,输入变量的最大深度为2,也就是二维数组。超过最大深度,该参数丢弃。

(30)max_input_vars

配置项:integer。

默认值:1000。

可修改范围:PHP_INI_PERDIR。

说明:设置输入变量的最大个数。例如,当这个值为 2 时,输入变量的最大个数为 2。超过最大个数的参数将被忽略,该参数不做解析。

(31)memory_limit

配置项:integer。

默认值:“128M”。

可修改范围:PHP_INI_ALL。

说明:设置脚本运行时占用的最大内存,设置为 -1 时表示不限制所占用内存。该参数实际控制的是 AG(mm_heap)→limit 的大小,当该参数小于 2M 时,会强制限制为 2M,否则为实际指定的大小。

(32)error_reporting

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:设置错误报告的级别,设置为0时表示关闭所有错误报告,设置为 -1 或者 E_ALL 将显示所有错误。设置的时候可以通过 PHP 内置的错误级别常量来进行位运算,例如:

E_ALL & ~E_NOTICE  // 报告除了E_NOTICE以外的所有错误
E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
// 报告所有的错误

PHP的错误级别有以下几个。

1)E_ERROR:运行时的致命错误,会中断代码执行,用1表示。 2)E_WARNING:运行时的警告,不影响代码执行,用2表示。 3)E_PARSE:编译时的语法错误,用4表示。 4)E_NOTICE:运行时的错误提示,不影响代码执行,用8表示。 5)E_CORE_ERROR:PHP初始化时的致命错误,类似E_ERROR,用16表示。 6)E_CORE_WARNING:PHP初始化时的警告,类似E_WARNING,用32表示。 7)E_COMPILE_ERROR:编译时的致命错误,类似E_ERROR,用64表示。 8)E_COMPILE_WARNING:编译时的警告,类似E_WARNING,用128表示。 9)E_USER_ERROR:用户产生的错误信息,类似E_ERROR,但是是由用户自己在代码中使用PHP函数trigger_error来产生的,用256表示。 10)E_USER_WARNING:用户产生的警告信息,类似E_WARNING,但是是由用户自己在代码中使用PHP函数trigger_error来产生的,用512表示。

11)E_USER_NOTICE:用户产生的错误提示,类似E_NOTICE,但是是由用户自己在代码中使用PHP函数trigger_error来产生的,用1024表示。 12)E_STRICT:启用PHP对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性,用2048表示。 13)E_RECOVERABLE_ERROR:可被捕获的致命错误,如果没有被自定义错误捕捉器捕捉,则错误将升级为E_ERROR,用4096表示。 14)E_DEPRECATED:运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告,用8192表示。 15)E_USER_DEPRECATED:用户产生的警告信息,类似E_DEPRECATED,但是是由用户自己在代码中使用PHP函数trigger_error来产生的,用16384表示。 16)E_ALL:所有错误,用32767表示。

(33)display_errors

配置项:integer、string,可设置为仅输出到 strout 或者 stderr。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:设置是否输出错误到 stderr/stdout,由于在错误输出中有可能会暴露服务器的敏感信息,所以生产环境下请勿开启该选项。

(34)display_startup_errors

配置项:integer、string,可设置为仅输出到strout或者stderr。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:设置是否输出PHP启动阶段的错误信息。打开该选项的时候将会输出很多PHP启动阶段的敏感信息,除非是为了调试,否则不建议开启该选项。

(35)log_errors

配置项:integer。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:设置是否把获取到的错误输出到日志文件中,强烈建议开启该选项,在事故发生后排除错误的时候非常有帮助。

(36)log_errors_max_len

配置项:integer。

默认值:"1024"。

可修改范围:PHP_INI_ALL。

说明:设置错误信息的最大长度,设置为 0 时表示不限制。例如:

ini_set('log_errors_max_len', 2);
substr();

// 输出:
// Warning: su in /data/htdocs/www.local/index.php on line 4

(37)ignore_repeated_errors

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:设置是否忽略重复的错误信息,默认不忽略。重复的错误必须出现在同一个文件中的同一行代码上。例如:

substr(); substr();
// 在开启的时候,只会记录一条错误,关闭的时候会记录两条

(38)ignore_repeated_source

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:设置忽略重复信息时,也忽略信息的来源,默认不忽略。当该设置开启时,重复信息将不会记录它是由不同的文件还是不同的源代码行产生的。

(39)report_memleaks

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:设置在编译调试并且 error_reporting 中有 E_WARNING 的时候内存泄漏信息是否显示(在 stdout 或者日志中),默认显示。

注意,编译调试指 --enable-debug,下同。

(40)report_zend_debug

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:设置在编译调试时,输出 zend debug 信息。当错误级别为 E_ERROR、E_CORE_ERROR、E_COMPILE_ERROR、E_USER_ERROR 时,会执行 DebugBreak() 暂停程序执行,打开调试器,进入调试模式。

(41)track_errors

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:当该设置开启时,会把运行时候的最后一个错误保存在预定义变量 $php_errormsg 中。

(42)xmlrpc_errors

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:当该设置开启时,PHP 输出的错误信息为 XML-RPC 格式。例如:

<? xml version="1.0" encoding="utf-8"? >
<methodResponse>
    <fault>
        <value>
            <struct>
                <member>
                    <name>faultCode</name>
                    <value>
                          <int>0</int>
                    </value>
                </member>
                <member>
                    <name>faultString</name>
                    <value>
                          <string>Warning:substr() expects at least 2 parameters, 0
                              given in /data/htdocs/www.local/test.php on line 4</string>
                    </value>
                </member>
            </struct>
        </value>
    </fault>
</methodResponse>

(43)xmlrpc_error_number

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:用作 XML-RPC faultCode 元素的值。

(44)html_errors

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:设置是否在错误输出中启用 HTML 标签,关闭的时候输出文本格式的错误信息。CLI 下强制关闭。

(45)docref_root

配置项:string。

默认值:""。

可修改范围:PHP_INI_ALL。

说明:设置帮助文档的地址,可以是一个 URL 或本地路径,仅在开启 html_errors 的时候生效。当发生一个错误的时候,会在错误信息中带上一个错误说明或函数说明页面的链接。例如:

docref_root = "http://php.net/manual/zh/"

Warning: include(a.php) [function.include]: failed to open stream: No such file
    or directory in /data/htdocs/www.local/test.php on line 3

文档可以从http://php.net/download-docs.php

(46)docref_ext

配置项:string。

默认值:""。

可修改范围:PHP_INI_ALL。

说明:设置本地帮助文档的文件扩展名,必须包含“. ”。

(47)error_prepend_string

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:设置错误信息之前输出的内容。例如:

error_prepend_string = 'php erroes:'

php errors:
Warning: include(a.php): failed to open stream: No such file or directory in /
    data/htdocs/www.local/test.php on line 3

(48)error_append_string

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:设置错误信息之后输出的内容。

(49)error_log

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:设置错误日志的保存位置,该文件必须是服务器可写的文件。例如:

error_log = "/data/log/php/php-error.log"

也可以指定为 syslog,当代码运行在 Linux 时,PHP 的错误将被记录在操作系统的日志中。例如:

$ sudo cat /var/log/messages |tail
Oct 15 07:16:21 centos7_192_168_33_10 al: PHP Warning:  include(a.php): failed to
    open stream: No such file or directory in /data/htdocs/www.local/test.php on
    line 3

当代码运行在 Windows 时,错误将被记录在事件日志,这里不再演示。

(50)windows.show_crt_warning

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

设置在 Windows 下是否显示 C++ 动态链接库的错误(待确认)。

(51)arg_separator.output

配置项:string。

默认值:"&"。

可修改范围:PHP_INI_ALL。

说明:指定 PHP 生成链接时的分隔符,默认为 &。例如:

arg_separator.output = "|"

$data = array('foo'=>'bar', 'baz'=>'boom', );
echo http_build_query($data);
// foo=bar|baz=boom

(52)arg_separator.input

配置项:string。

默认值:"&"。

可修改范围:PHP_INI_ALL。

说明:指定 PHP 解析链接时的分隔符,默认为 &。例如:

arg_separator.input = "|"

$ curl http://www.local/test.php? foo=bar|baz=boom
print_r($_GET);
// Array ( [foo] => bar [baz] => boom )

(53)variables_order

配置项:string。

默认值:"EGPCS"。

可修改范围:PHP_INI_PERDIR。

说明:确定 PHP 注册的超全局变量,5 个字母分别对应 $_ENV、$_GET、$_POST、$_COOKIE、$_SERVER。当 request_order 为空时,该配置项也包含了 request_order 的功能。

(54)request_order

配置项:string。

默认值:null。

可修改范围:PHP_INI_PERDIR。

说明:确定哪些超全局变量注册到 $_REQUEST,以及注册参数的解析顺序,当存在同名参数的时候,后边的参数将覆盖前边的。例如:

$ curl -d "a=2" http://www.local/test.php? a=1
print_r($_REQUEST);
// Array ( [a] => 2 )

因此,$_REQUEST 的值是不可信的。

(55)register_argc_argv

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_PERDIR

说明:设置是否注册 $argc 和 $argv, CLI 下强制开启。$argv 是调用脚本的时候传递的参数数组,其第一个元素始终为调用的脚本,其他元素为参数列表;$argc 为调用脚本的时候传递的参数个数。例如:

$ php test.php 1 2 3
print_r($argv);
var_dump($argc);

Array([0] => test.php [1] => 1 [2] => 2 [3] => 3)
int(4)

(56)auto_globals_jit

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_PERDIR。

说明:设置是否延迟注册 $_ENV、$_REQUEST、$_SERVER,开启后,这 3 个超全局变量将在第一次被使用的时候创建,而不是脚本一运行就创建,当确定代码不会用到这 3 个变量时,可以开启此选项以带来轻微的性能提升。

(57)enable_post_data_reading

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_PERDIR。说明:控制 PHP 是否会读取 POST 数据。关闭该设置的时候,$_POST 和 $_FILES 始终为空,可以通过 php:// 来读取。

(58)post_max_size

配置项:string。

默认值:"8M"。

可修改范围:PHP_INI_PERDIR。

说明:控制 post 提交的最大值,若其为 0 则表示无限制。当 enable_post_data_reading 关闭时,该值将被忽略。该设置也会影响文件上传,当有文件上传时,该选项的值必须大于 upload_max_size,当实际 post 的数据超过该限制时,$_POST 和 $_FILE 将为空。

(59)auto_prepend_file

配置项:string。

默认值:null。

可修改范围:PHP_INI_PERDIR。

说明:在主文件执行前自动记载执行的文件。

(60)auto_append_file

配置项:string。

默认值:null。

可修改范围:PHP_INI_PERDIR。

说明:在主文件执行后自动记载执行的文件。

(61)default_mimetype

配置项:string。

默认值:"text/html"。

可修改范围:PHP_INI_ALL。

说明:指定 PHP 输出时的默认 MIME 类型。

(62)default_charset

配置项:string。

默认值:"utf-8"。

可修改范围:PHP_INI_ALL。

说明:指定 PHP 的默认编码,指定的时候将会在 header 的 content-type 中输出默认编码。

(63)internal_encoding

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL

说明:指定 PHP 内部编码。其为空时,内部编码为 default_charset 的值。

(64)input_encoding

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:指定 PHP 输入编码。其为空时,内部编码为 default_charset 的值。

(65)output_encoding

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:指定 PHP 输出编码。其为空时,内部编码为 default_charset 的值。

(66)include_path

配置项:string。

默认值:".:/usr/local/php7/lib/php"。

可修改范围:PHP_INI_ALL。

说明:指定 require、include、fopen、file、readfile 和 file_get_contents 函数查找文件的目录列表。有多个目录时,Linux 下使用冒号间隔,Windows 下使用分号间隔。默认值为当前目录和编译安装 PHP 的目录。

PHP 在查找要包含的文件时,有 3 种情况:

1)绝对路径,即直接引用对应文件,找不到则结束。 2)相对路径,即根据实际代码目录引用对应文件,找不到则结束。 3)从 include_path 的目录开始查找,再到当前目录,直到找到为止,找不到则结束。

(67)doc_root

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:指定了该选项,则 PHP 将只能运行该目录下的代码,其他目录下的代码无法被执行。

(68)user_dir

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:作用待确定。

(69)extension_dir

配置项:string。

默认值:"/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303"。

可修改范围:PHP_INI_SYSTEM。

说明:指定动态扩展加载目录,默认值为 PHP 安装目录下的 lib/extensions 下的一个目录,最后的目录表示非 budeg 版本,非线程安全,引擎版本为 20160303。

(70)sys_temp_dir

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:指定 PHP 临时文件的保存目录。

(71)enable_dl

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:仅对 Apache 有效,可以针对每个虚拟机或每个目录开启或关闭 dl() 动态加载 PHP 模块;在多线程服务器上(如 IIS)无法工作,会强制关闭。

(72)cgi.force_redirect

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:仅对 Apache 有效,防止通过如 http://my.host/cgi-bin/php/secretdir/script.php 这样的 URL 直接调用 PHP。PHP 在此模式下只会解析已经通过了 Web 服务器的重定向规则的 URL。

(73)cgi.nph

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:开启该配置后,CGI 对于每个请求都强制返回 200 状态码。

(74)cgi.redirect_status_env

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:在 cgi.force_redirect 开启并且没有运行在 Apache 或者 Netscape 下时,需要设置一个环境变量名称,PHP 将会根据这个环境变量来决定是否继续运行。该设置可能会带来一些安全问题,请谨慎使用。

(75)cgi.fix_pathinfo

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:为 CGI 提供真正的 PATH_INFO / PATH_TRANSLATED 支持。PHP 以前的行为是将 PATH_TRANSLATED 设置为 SCRIPT_FILENAME,并且弄不清楚 PATH_INFO 是什么。有关 PATH_INFO 的更多信息,请参阅 CGI 规范。将其设置为 1 将导致 PHP CGI 修复其路径以符合规范;设置为 0 会导致 PHP 的行为像以前一样。默认开启。

(76)cgi.discard_path

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:如果启用 cgi.discard_path, PHP CGI 二进制文件可以安全地放置在 Web 树之外,并且人们将无法规避 .htaccess 安全性。

(77)fastcgi.impersonate

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:IIS 下的 FastCGI 支持模拟主叫客户端的安全令牌的能力。这允许 IIS 定义请求的安全上下文。Apache 下的 mod_fastcgi 目前不支持此功能(03/17/2002),如果在 IIS 下运行,请设置为 1。默认为 0。

(78)fastcgi.logging

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:使用 FastCGI 时打开 SAPI 日志记录。默认启用日志记录。

(79)cgi.rfc2616_headers

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:告诉 PHP 发送 HTTP 响应代码时要使用什么类型的标头。如果该选项设置为 0,则 PHP 将发送一个由 Apache 和其他 Web 服务器支持的 Status 头;如果该选项设置为 1,则 PHP 将发送符合 RFC 2616 的标头。

(80)cgi.check_shebang_line

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:控制 CGI PHP 是否检查脚本顶部以 “#!” 开头的行(shebang)。果脚本需要支持作为独立脚本或者通过 PHP CGI < 运行,则需要打开这个设置。打开的时候,CGI PHP 将会跳过此行并忽略其内容。

(81)file_uploads

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:设置是否允许上传文件。

(82)upload_tmp_dir

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:设置用于在进行文件上传时存储文件的临时目录,该目录必须可写。如果没有指定,PHP将使用系统的默认值。

如果此处指定的目录不可写,则PHP将返回系统默认的临时目录。如果open_basedir为on,则系统默认目录必须可写以确保上传成功。

(83)upload_max_filesize

配置项:string。

默认值:"2M"。

可修改范围:PHP_INI_PERDIR。

说明:设置上传文件的最大值,当其置为 integer 时,单位为字节。

(84)max_file_uploads

配置项:integer。

默认值:20。

可修改范围:PHP_INI_SYSTEM。

说明:设置单个请求同时上传文件的最大个数。

(85)allow_url_fopen

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:设置是否允许打开远程文件(如 http:// 或 ftp://),关闭的时候无法通过 fopen、file_get_contents 等函数打开远程连接。

注意,CURL 不受此配置的影响。

(86)allow_url_include

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:设置是否允许引用远程文件(如 include、include_onec、require、require_once),该选项依赖 allow_url_fopen,强烈建议关闭。

(87)from

配置项:string

默认值:“ ”。

可修改范围:PHP_INI_ALL。

说明:定义匿名 FTP 的密码。

(88)user_agent

配置项:string。

默认值:null。

可修改范围:PHP_INI_ALL。

说明:定义 PHP 发送的 User-Agent。

(89)default_socket_timeout

配置项:string。

默认值:"60"。

可修改范围:PHP_INI_ALL。

说明:设置基于 Socket 流的默认超时时间(秒)。全流程时间。

(90)auto_detect_line_endings

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:当其设为 on 时,PHP 将检查通过 fgets 和 file 取得的数据中的行结束符号是符合 UNIX、MS-DOS 及 Macintosh 的习惯。默认值是 off,因为在检测第一行的 EOL 习惯时会有很小的性能损失,而且在 UNIX 系统下使用回车符号作为项目分隔符的人们会遭遇向下不兼容的行为。

[Date]相关配置

(1)date.timezone

配置项:string。

默认值:" "。

可修改范围:PHP_INI_ALL。

说明:指定适用于所有日期/时间函数的默认时区。

(2)date.default_latitude

配置项:float。

默认值:"31.7667"。

可修改范围:PHP_INI_ALL。

说明:指定默认维度。

(3)date.default_longitude

配置项:float。

默认值:"35.2333"。

可修改范围:PHP_INI_ALL。

说明:指定默认经度。

(4)date.sunrise_zenith

配置项:float。

默认值:"90.583333"。

可修改范围:PHP_INI_ALL。

说明:指定默认日出天顶。

(5)date.sunset_zenith

配置项:float。

默认值:"90.583333"。

可修改范围:PHP_INI_ALL。

说明:指定默认日出天顶。

[Opcache]相关配置

(1)opcache.enable

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:指定是否开启 opcache。

(2)opcache.enable_cli

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:指定是否在 CLI 下开启 opcache。

(3)opcache.memory_consumption

配置项:integer。

默认值:"128"。

可修改范围:PHP_INI_SYSTEM。

说明:指定 opcache 的共享内存大小,单位为 M。

(4)opcache.interned_strings_buffer

配置项:integer。

默认值:"8"。

可修改范围:PHP_INI_SYSTEM。

说明:指定临时字符串的内存大小,单位为M。

(5)opcache.max_accelerated_files

配置项:integer。

默认值:"10000"。

可修改范围:PHP_INI_SYSTEM。

说明:指定 OPcache 缓存文件的最大数量,取值为 200~1000 000。

(6)opcache.max_wasted_percentage

配置项:integer。

默认值:"5"。

可修改范围:PHP_INI_SYSTEM。

说明:指定浪费内存的上限,以百分比计。如果达到此上限,那么 opcache 将产生重新启动续发事件。

(7)opcache.use_cwd

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:如果启用,opcache 将在哈希表的脚本键之后附加改脚本的工作目录,以避免同名脚本冲突的问题。禁用此选项可以提高性能,但是可能会导致应用崩溃。

(8)opcache.validate_timestamps

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:如果启用该选项,那么 opcache 会每隔 opcache.revalidate_freq 设定的秒数来检查脚本是否更新。如果禁用该选项,必须使用 opcache_reset 函数或者 opcache_invalidate 函数来手动重置 opcache,也可以通过重启 Web 服务器来使文件系统更改生效。

(9)opcache.revalidate_freq

配置项:integer。

默认值:"2"。

可修改范围:PHP_INI_ALL。

说明:检查脚本时间戳是否有更新的周期,以秒为单位。该选项设置为 0,会导致针对每个请求都要检查脚本更新。

(10)opcache.revalidate_path

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用。因此,将无法找到不在包含路径下的同名文件。

(11)opcache.save_comments

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:如果禁用该选项,脚本文件中的注释内容将不会被包含到 opcache 缓存文件,这样可以有效减小优化后的文件体积。

(12)opcache.fast_shutdown

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:如果启用该选项,则会使用快速停止续发事件。所谓快速停止续发事件是指依赖 Zend 引擎的内存管理模块一次释放全部请求变量的内存,而不是依次释放每一个已分配的内存块。

(13)opcache.enable_file_override

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:启用该选项后,当调用 file_exists、is_file 和 is_readable 函数时,无论文件是否被缓存都将检查 opcache,如果禁用了 opcache.validate_timestamps,则会有返回失效数据的风险。

(14)opcache.optimization_level

配置项:integer。

默认值:"0x7FFFBFFF"。

可修改范围:PHP_INI_SYSTEM。

说明:控制优化级别的二进制位掩码。

(15)opcache.dups_fix

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_ALL。

说明:仅作为针对 “不可重定义类” 错误的一种解决方案。

(16)opcache.blacklist_filename

配置项:string。

默认值:" "。

可修改范围:PHP_INI_SYSTEM。

说明:指定 opcache 黑名单文件位置。黑名单文件为文本文件,包含了不进行预编译优化的文件名,每行一个文件名。黑名单中的文件名可以使用通配符,也可以使用前缀。此文件中以分号(;)开头的行将被视为注释。

(17)opcache.max_file_size

配置项:integer。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:以字节为单位的缓存的文件大小上限。该选项设置为 0,表示缓存全部文件。

(18)opcache.consistency_checks

配置项:integer。

默认值:"1"。

可修改范围:PHP_INI_ALL。

说明:指定每N次请求后检查 opcache,设置为 0 表示不检查。

(19)opcache.force_restart_timeout

配置项:integer。

默认值:"180"。

可修改范围:PHP_INI_SYSTEM。

说明:设定缓存处于非激活状态时,等待多少秒之后计划重启。如果超出了设定时间,则 opcache 模块将杀掉持有缓存锁的进程,并进行重启。

(20)opcache.error_log

配置项:string。

默认值:" "。

可修改范围:PHP_INI_SYSTEM。

说明:指定 opcache 的错误日志文件,为空则输出到 strerr。

(21)opcache.log_verbosity_level

配置项:integer。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM

说明:指定 opcache 模块的日志级别。默认情况下,仅致命级别(0)及错误级别(1)的日志会被记录。其他可用的级别有警告(2)、信息(3)和调试(4)。

(22)opcache.preferred_memory_model

配置项:string。

默认值:" "。

可修改范围:PHP_INI_SYSTEM。

说明:指定 OPcache 的共享内存方式,为空时将由系统决定,可选值包括 mmap、shm、posix 以及 win32。

(23)opcache.protect_memory

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM

说明:保护共享内存,以避免执行脚本时发生非预期的写入;仅用于内部调试。

(24)opcache.restrict_api

配置项:string。

默认值:" "。

可修改范围:PHP_INI_SYSTEM。

说明:指定仅允许路径是以指定字符串开始的 PHP 脚本调用 opcache API 函数。该选项为空,表示不做限制。

(25)opcache.mmap_base

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:设置在 Windows 平台上共享内存段的基地址。所有的 PHP 进程都将共享内存映射到同样的地址空间。使用此配置指令可避免 “Unable to reattach to base address” 的错误。

(26)opcache.file_cache

配置项:string。

默认值:null。

可修改范围:PHP_INI_SYSTEM。

说明:配置二级缓存目录并启用二级缓存。启用二级缓存可以在 SHM 内存满了、服务器重启或者重置 SHM 的时候提高性能。默认值为空字符串 "",表示禁用基于文件的缓存。

(27)opcache.file_cache_only

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:启用或禁用在共享内存中缓存 opcode。

(28)opcache.file_cache_consistency_checks

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:当从文件缓存中加载脚本时,是否对文件的校验和进行验证。

(29)opcache.file_cache_fallback

配置项:boolen。

默认值:"1"。

可修改范围:PHP_INI_SYSTEM。

说明:在 Windows 平台上,当一个进程无法附加到共享内存时,需要显示的启用文件缓存即 opcache.file_cache_only=1。

(30)opcache.huge_code_pages

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:启用或禁用 PHP 代码(文本段)复制到 HUGE PAGES。

(31)opcache.validate_permission

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:针对当前用户,验证缓存文件的访问权限。

(32)opcache.validate_root

配置项:boolen。

默认值:"0"。

可修改范围:PHP_INI_SYSTEM。

说明:在 chroot 环境中避免命名冲突。为了防止进程访问 chroot 环境之外的文件,应该在 chroot 环境下启用这个选项。