运行时配置
这些函数的行为受 php.ini 中的设置影响。
名字 | 默认 | 可修改范围 | 更新日志 |
---|---|---|---|
session.save_path | "" | PHP_INI_ALL | |
session.name | "PHPSESSID" | PHP_INI_ALL | |
session.save_handler | "files" | PHP_INI_ALL | |
session.auto_start | "0" | PHP_INI_PERDIR | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | 自 PHP 4.3.2 起可用。 |
session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
session.serialize_handler | "php" | PHP_INI_ALL | |
session.cookie_lifetime | "0" | PHP_INI_ALL | |
session.cookie_path | "/" | PHP_INI_ALL | |
session.cookie_domain | "" | PHP_INI_ALL | |
session.cookie_secure | "" | PHP_INI_ALL | 自 PHP 4.0.4 起有效。 |
session.cookie_httponly | "" | PHP_INI_ALL | 自 PHP 5.2.0. 有效 |
session.use_strict_mode | "0" | PHP_INI_ALL | 自 PHP 5.5.2. 有效 |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。 |
session.referer_check | "" | PHP_INI_ALL | |
session.entropy_file | "" | PHP_INI_ALL | |
session.entropy_length | "0" | PHP_INI_ALL | |
session.cache_limiter | "nocache" | PHP_INI_ALL | |
session.cache_expire | "180" | PHP_INI_ALL | |
session.use_trans_sid | "0" | PHP_INI_ALL | 在 PHP <= 4.2.3 是 PHP_INI_ALL,在 PHP < 5 是 PHP_INI_PERDIR。自 PHP 4.0.3 起可用。 |
session.bug_compat_42 | "1" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。 |
session.bug_compat_warn | "1" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。 |
session.hash_function | "0" | PHP_INI_ALL | 自 PHP 5.0.0 起可用。 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | 自 PHP 5.0.0 起可用。 |
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | 自 PHP 4.0.4 起可用。 |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0. |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0. |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | Available since PHP 5.4.0. |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | Available since PHP 5.4.0. |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | Available since PHP 5.4.0. |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0. |
session.lazy_write | "1" | PHP_INI_ALL | Available since PHP 7.0.0. |
会话管理系统支持许多配置选项,可以在自己的 php.ini 文件中设定。这里只是个简短的概览。
-
session.save_handler
string - session.save_handler 定义了来存储和获取与会话关联的数据的处理器的名字。默认为 files。Note that individual extensions may register their own save_handlers; registered handlers can be obtained on a per-installation basis by referring to phpinfo(). 参见 session_set_save_handler()。
-
session.save_path
string -
session.save_path 定义了传递给存储处理器的参数。如果选择了默认的
files 文件处理器,则此值是创建文件的路径。默认为
/tmp。参见
session_save_path()。
此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如,设定为 '5;/tmp' 将使创建的会话文件和路径类似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If。要使用 N 参数,必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh,windows 版本是 mod_files.bat 可以用来做这件事。此外注意如果使用了 N 参数并且大于 0,那么将不会执行自动垃圾回收,更多信息见 php.ini。另外如果用了 N 参数,要确保将 session.save_path 的值用双引号 "quotes" 括起来,因为分隔符分号( ;)在 php.ini 中也是注释符号。
文件储存模块默认使用 mode 600 创建文件。通过 修改可选参数 MODE 来改变这种默认行为: N;MODE;/path ,其中 MODE 是 mode 的八进制表示。 MODE 设置不影响进程的掩码(umask)。
Warning如果将此设定为一个全局可读的目录,例如 /tmp(默认值),服务器上的其他用户有可能通过该目录的文件列表破解会话。
Caution使用以上描述的可选目录层级参数 N 时请注意,对于绝大多数站点,大于1或者2的值会不太合适——因为这需要创建大量的目录:例如,值设置为 3 需要在文件系统上创建 64^3 个目录,将浪费很多空间和 inode。
仅仅在绝对肯定站点足够大时,才可以设置 N 大于2。
Note: 在 PHP 4.3.6 之前,Windows 用户必须修改此选项以使用 PHP 的会话函数。必须指定一个合法路径,例如:c:/temp。
-
session.name
string - session.name 指定会话名以用做 cookie 的名字。只能由字母数字组成,默认为 PHPSESSID。参见 session_name()。
-
session.auto_start
boolean - session.auto_start 指定会话模块是否在请求开始时自动启动一个会话。默认为 0(不启动)。
-
session.serialize_handler
string - session.serialize_handler 定义用来序列化/解序列化的处理器名字。 当前支持 PHP 序列化格式 (名为 php_serialize)、 PHP PHP 内部格式 (名为 php 及 php_binary) 和 WDDX (名为 wddx)。 如果 PHP 编译时加入了 WDDX 支持,则只能用 WDDX。 自 PHP 5.5.4 起可以使用 php_serialize。 php_serialize 在内部简单地直接使用 serialize/unserialize 函数,并且不会有 php 和 php_binary 所具有的限制。 使用较旧的序列化处理器导致 $_SESSION 的索引既不能是数字也不能包含特殊字符(| and !) 。 使用 php_serialize 避免脚本退出时,数字及特殊字符索引导致出错。 默认使用 php。
-
session.gc_probability
integer - session.gc_probability 与 session.gc_divisor 合起来用来管理 gc(garbage collection 垃圾回收)进程启动的概率。默认为 1。详见 session.gc_divisor。
-
session.gc_divisor
integer - session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。session.gc_divisor 默认为 100。
-
session.gc_maxlifetime
integer -
session.gc_maxlifetime 指定过了多少秒之后数据就会被视为“垃圾”并被清除。
垃圾搜集可能会在 session 启动的时候开始(
取决于session.gc_probability 和
session.gc_divisor)。
Note:
如果不同的脚本具有不同的 session.gc_maxlifetime 数值但是共享了同一个地方存储会话数据,则具有最小数值的脚本会清理数据。此情况下,与 session.save_path 一起使用本指令。
session.referer_check
string
session.entropy_file
string
Note: 自 PHP 5.4.0 起,默认情况下, session.entropy_file 在 /dev/urandom 或 /dev/arandom 可用的时候使用它们。 在 PHP 5.3.0 中此指令默认留空。
session.entropy_length
integer
session.use_strict_mode
boolean
session.use_cookies
boolean
session.use_only_cookies
boolean
session.cookie_lifetime
integer
Note:
The expiration timestamp is set relative to the server time, which is not necessarily the same as the time in the client's browser.
session.cookie_path
string
session.cookie_domain
string
session.cookie_secure
boolean
session.cookie_httponly
boolean
session.cache_limiter
string
session.cache_expire
integer
session.use_trans_sid
boolean
Note: 基于 URL 的会话管理比基于 cookie 的会话管理有更多安全风险。例如用户有可能通过 email 将一个包含有效的会话 ID 的 URL 发给他的朋友,或者用户总是有可能在收藏夹中存有一个包含会话 ID 的 URL 来以同样的会话 ID 去访问站点。
session.trans_sid_tags
string
Note: Before PHP 7.1.0, url_rewriter.tags was used for this purpose. Since PHP 7.1.0, fieldset is no longer considered as special tag.
session.trans_sid_hosts
string
session.bug_compat_42
boolean
session.bug_compat_warn
boolean
session.sid_length
integer
Compatibility Note: Use 32 for session.hash_func=0 (MD5) and session.hash_bits_per_character=4, session.hash_func=1 (SHA1) and session.hash_bits_per_character=6. Use 26 for session.hash_func=0 (MD5) and session.hash_bits_per_character=5. Use 22 for session.hash_func=0 (MD5) and session.hash_bits_per_character=6. You must configure INI values to have at least 128 bits in session ID. Do not forget set appropriate value to session.sid_bits_per_character, otherwise you will have weaker session ID.
Note: This setting is introduced in PHP 7.1.0.
session.sid_bits_per_character
integer
Note: This setting is introduced in PHP 7.1.0.
session.hash_function
mixed
Since PHP 5.3.0 it is also possible to specify any of the algorithms provided by the hash extension (if it is available), like sha512 or whirlpool. A complete list of supported algorithms can be obtained with the hash_algos() function.
Note:
这是 PHP 5 引进的。
session.hash_bits_per_character
integer
Note:
这是 PHP 5 引进的。
url_rewriter.tags
string
Note: 如果要符合 XHTML,去掉 form 项并在表单字段前后加上 <fieldset> 标记。
session.upload_progress.enabled
boolean
session.upload_progress.cleanup
boolean
Note: It is highly recommended to keep this feature enabled.
session.upload_progress.prefix
string
session.upload_progress.name
string
session.upload_progress.freq
mixed
session.upload_progress.min_freq
integer
session.lazy_write
boolean
register_globals 配置选项影响到会话变量是怎样存储和恢复的。
Upload progress will not be registered unless session.upload_progress.enabled is enabled, and the $_POST[ini_get("session.upload_progress.name")] variable is set. See Session Upload Progress for mor details on this functionality.