php.ini 常用配置详解

php.ini 常用配置详解

文章目录

  • php.ini 常用配置详解
    • 配置项修改范围
    • 配置项
      • 文件上传相关
      • 数据处理
      • 重要参数项
      • 日期相关
      • 异常错误相关设置
      • session配置项
      • .user.ini 文件

配置项修改范围

PHP_INI_* 模式的定义

模式 含义
PHP_INI_USER 可在用户脚本(例如 ini_set())或 Windows 注册表)(自 PHP 5.3 起)以及 .user.ini 中设定
PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL 可在任何地方设定

配置项

文件上传相关

File Uploads Configuration Options

名字 默认 可修改范围 描述
file_uploads “1” PHP_INI_SYSTEM 是否允许http上传文件
upload_tmp_dir NULL PHP_INI_SYSTEM 上传文件时用于存储文件的临时目录。php运行用户可写,未设置则使用系统默认值。如果开启了openbase_dir
upload_max_filesize “2M” PHP_INI_PERDIR 上传文件的大小限制,值为整数时,则单位为字节数,支持 K,M,G速记符
max_file_uploads 20 PHP_INI_SYSTEM 允许同时上载的最大文件数。

文件大小亦受限于 post_max_size 参数
受限于 nginx 设置的client_max_body_size参数

数据处理

Data Handling Configuration Options

名字 默认 可修改范围 更新日志
enable_post_data_reading “1” PHP_INI_PERDIR 禁用此选项将导致不填充 $_POST 和 $_FILES。读取 postdata 的唯一方法就是使用 php://input stream wrapper。这对于代理请求或以高内存效率的方式处理 POST 数据非常有用。
post_max_size “8M” PHP_INI_PERDIR 设置post传输数据最大值,此参数会影响文件上传,upload_max_size应小于该参数
default_mimetype “text/html” PHP_INI_ALL Content-Type: text/html
default_charset “UTF-8” PHP_INI_ALL 该值影响多个函数的编码参数,htmlentities(), html_entity_decode() ,htmlspecialchars(),iconv , mbstring

重要参数项

名字 默认 可修改范围 描述
max_execution_time “30” PHP_INI_ALL max_execution_time只影响脚本本身执行的时间。任何发生在诸如使用system()的系统调用,流操作,数据库操作等的脚本执行的最大时间不包括其中
memory_limit “128M” PHP_INI_ALL 设置脚本允许分配的最大内存。支持整型,速记符,不限制内存则设置为 “-1”
disable_functions “” 仅php.ini 禁止某些函数;接受逗号分隔的函数名列表作为参数;只能禁止内置函数;无法禁止自定义函数;只能在php.ini中设置
disable_classes “” 仅php.ini 禁用某些类;用逗号分隔类名;只能在php.ini中设置
expose_php “1” 仅php.ini 是否在响应头中增加php版本信息 X-Powered-By: PHP/x.x.x 不建议开启
open_basedir NULL PHP_INI_ALL 将 PHP 可以访问的文件限制到指定的目录,包括文件本身。此指令不受是否打开或关闭安全模式的影响。
user_ini.filename .user.ini 指定user_ini的文件名
user_ini.cache_ttl 300 间隔多久读取一次user_ini文件
allow_url_fopen On PHP_INI_SYSTEM 允许打开远程文件
allow_url_include On php.ini 允许远程文件包含 include, include_once, require, require_once需要打开allow_url_fopen
default_socket_timeout “60” PHP_INI_ALL 基于 socket 的流的默认超时时间,fopen,file_get_contents等函数受此设置影响
output_buffering “On” PHP_INI_PERDIR 该选项设置为 On 时,将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值,可将该选项设定为指定的最大字节数(例如 output_buffering=4096,该选项在 PHP-CLI 下总是为 Off。可以简单理解为开启后,只有全部输出完毕才会发送到浏览器,ob_*系列函数可改变缓冲行为

日期相关

名字 默认 可修改范围 描述
date.timezone “” PHP_INI_ALL 设置时区, Asia/Shanghai

异常错误相关设置

错误和日志记录配置选项

名字 默认 可修改范围 描述
error_reporting NULL PHP_INI_ALL 设置错误级别,生产环境建议设置 E_ALL & ~E_DEPRECATED & ~E_STRICT,开发环境设置为E_ALL
display_errors “1” PHP_INI_ALL 是否将错误信息输出到显示屏幕,生产环境建议关闭。如果设置为stderr 则输出到stderr而不是strout
display_startup_errors “0” PHP_INI_ALL 显示php启动时的错误,生产环境建议关闭。
log_errors “0” PHP_INI_ALL 设置是否将脚本运行的错误信息记录到服务器错误日志或者error_log之中。
error_log NULL PHP_INI_ALL 设置脚本错误将被记录到的文件。该文件必须是web服务器用户可写的。如果特殊值 syslog 被设置,则将错误信息发送到系统日志记录器。
log_errors_max_len “1024” PHP_INI_ALL 设置 log_errors 的最大字节数. 在 error_log 会添加有关错误源的信息。默认值为1024,如果设置为0表示不限长度。该长度设置对记录的错误,显示的错误,以及 $php_errormsg都会有限制作用。
ignore_repeated_errors “0” PHP_INI_ALL 不记录重复的信息。重复的错误必须出现在同一个文件中的同一行代码上,除非 ignore_repeated_source 设置为true。
ignore_repeated_source “0” PHP_INI_ALL 忽略重复消息时,也忽略消息的来源。当该设置开启时,重复信息将不会记录它是由不同的文件还是不同的源代码行产生的。
report_memleaks “1” PHP_INI_ALL 如果这个参数设置为Off,则内存泄露信息不会显示 (在 stdout 或者日志中)
track_errors “0” PHP_INI_ALL 如果开启,最后的一个错误将永远存在于变量 $php_errormsg 中。
html_errors “1” PHP_INI_ALL 在错误信息中关闭HTML标签。这种新的HTML格式的错误信息是可以点击,它引导用户前往描述该错误或者导致该错误发生的函数的参考信息页面。 这些参考与 docref_root 和 docref_ext 的设置有关。
xmlrpc_errors “0” PHP_INI_SYSTEM 关闭正常的错误报告,并将错误的格式设置为XML-RPC错误信息的格式。
xmlrpc_error_number “0” PHP_INI_ALL 用作 XML-RPC faultCode 元素的值。
docref_root “” PHP_INI_ALL 新的错误信息格式包含了对应的参考页面,该页面对错误进行具体描述,或者描述了导致该错误发生的函数。为了提供手册的页面,你可以在PHP官方站点下载对应语言的手册,并在ini中设置网址到本地对应的地址。如果你的本地手册拷贝可以使用"/manual/" 访问,你就可以简单的设置 docref_root=/manual/。另外你还需要设置 docref_ext 匹配你本地文件的后缀名 docref_ext=.html。当然也可以设置一个外部的参考地址。例如你可以设置 docref_root=http://manual/en/ 或者 docref_root=“http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F”
docref_ext “” PHP_INI_ALL docref_ext的值必须以 “.” 开头.
error_prepend_string NULL PHP_INI_ALL 错误信息之前输出的内容。
error_append_string NULL PHP_INI_ALL 错误信息之后输出的内容。

脚本出现致命错误时,任何运行时设置都会无效

session配置项

会话配置选项

名字 默认 可修改范围 描述
session.save_path “” PHP_INI_ALL session.save_path 定义了传递给存储处理器的参数。如果选择了默认的 files 文件处理器,则此值是创建文件的路径。默认为 /tmp。
session.name “PHPSESSID” PHP_INI_ALL 指定会话名以用做 cookie 的名字。只能由字母数字组成,默认为 PHPSESSID。
session.save_handler “files” PHP_INI_ALL 定义了来存储和获取与会话关联的数据的处理器的名字。默认为 files。支持的值可通过php_info() 查看session模块 Registered save handlers
session.auto_start “0” PHP_INI_PERDIR 是否自动开启session
session.gc_probability “1” PHP_INI_ALL session.gc_probability/session.gc_divisor概率处理过期session文件
session.gc_divisor “100” PHP_INI_ALL 每次启动生成新的session时,触发垃圾回收,清除概率为上面
session.gc_maxlifetime “1440” PHP_INI_ALL 指定过了多少秒之后数据就会被视为“垃圾”并被清除。
session.serialize_handler “php” PHP_INI_ALL 定义用来序列化/解序列化的处理器名字
session.cookie_lifetime “0” PHP_INI_ALL 以秒数指定了发送到浏览器的 cookie 的生命周期。值为 0 表示“直到关闭浏览器”。默认为 0。
session.cookie_path “/” PHP_INI_ALL 指定了要设定会话 cookie 的路径。默认为 /。
session.cookie_domain “” PHP_INI_ALL 指定了要设定会话 cookie 的域名。默认为无,表示根据 cookie 规范产生 cookie 的主机名。
session.cookie_secure “” PHP_INI_ALL 指定是否仅通过安全连接https发送 cookie。默认为 off
session.cookie_httponly “” PHP_INI_ALL 将 cookie 标记为只能通过 HTTP 协议访问。这意味着 cookie 不能被脚本语言访问,比如 JavaScript。此设置可以有效地帮助减少通过 XSS 攻击进行的身份盗窃(尽管并非所有浏览器都支持此设置)。
session.use_cookies “1” PHP_INI_ALL 指定是否在客户端用 cookie 来存放会话 ID。默认为 1(启用)。
session.use_only_cookies “1” PHP_INI_ALL 指定是否在客户端仅仅使用 cookie 来存放会话 ID。启用此设定可以防止有关通过 URL 传递会话 ID 的攻击。

如果设置save_handler=redis
则sale_path设置如下 session.save_path=tcp://ip:port?auth=passwrord

.user.ini 文件

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIRPHP_INI_USER 模式的 INI 设置可被识别。

两个新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。

user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。

user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。

你可能感兴趣的:(php,php)