这些函数的行为受 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 | |
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 | |
session.cookie_httponly | "" | PHP_INI_ALL | 自 PHP 5.2.0 起有效 |
session.cookie_samesite | "" | PHP_INI_ALL | 自 PHP 7.3.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 | |
session.referer_check | "" | 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 | |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | 自 PHP 7.1.0 起有效。 |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] | PHP_INI_ALL | 自 PHP 7.1.0 起有效。 |
session.sid_length | "32" | PHP_INI_ALL | 自 PHP 7.1.0 起有效。 |
session.sid_bits_per_character | "4" | PHP_INI_ALL | 自 PHP 7.1.0 起有效。 |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | 自 PHP 5.4.0 起有效。 |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | 自 PHP 5.4.0 起有效。 |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | 自 PHP 5.4.0 起有效。 |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | 自 PHP 5.4.0 起有效。 |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | 自 PHP 5.4.0 起有效。 |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | 自 PHP 5.4.0 起有效。 |
session.lazy_write | "1" | PHP_INI_ALL | 自 PHP 7.0.0 起有效。 |
url_rewriter.tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | 自 PHP 7.1.0 起,session 功能不再使用此选项。 |
session.hash_function | "0" | PHP_INI_ALL | 自 PHP 7.1.0 起移除。 |
session.hash_bits_per_character | "4" | PHP_INI_ALL | 自 PHP 7.1.0 起移除。 |
session.entropy_file | "" | PHP_INI_ALL | 自 PHP 7.1.0 起移除。 |
session.entropy_length | "0" | PHP_INI_ALL | 自 PHP 7.1.0 起移除。 |
session.bug_compat_42 | "1" | PHP_INI_ALL | 自 PHP 5.4.0 起移除。 |
session.bug_compat_warn | "1" | PHP_INI_ALL | 自 PHP 5.4.0 起移除。 |
会话管理系统支持许多配置选项,可以在自己的 php.ini 文件中设定。这里只是个简短的概览。
session.save_handler
string
session.save_path
string
此指令还有一个可选的 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)。
如果将此设定为一个全局可读的目录,例如 /tmp(默认值),服务器上的其他用户有可能通过该目录的文件列表破解会话。
使用以上描述的可选目录层级参数 N 时请注意,对于绝大多数站点,大于1或者2的值会不太合适——因为这需要创建大量的目录:例如,值设置为 3 需要在文件系统上创建 64^3 个目录,将浪费很多空间和 inode。
仅仅在绝对肯定站点足够大时,才可以设置 N 大于2。
Note: 在 PHP 4.3.6 之前,Windows 用户必须修改此选项以使用 PHP 的会话函数。必须指定一个合法路径,例如:c:/temp。
session.name
string
session.auto_start
boolean
session.serialize_handler
string
session.gc_probability
integer
session.gc_divisor
integer
session.gc_maxlifetime
integer
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
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.cache_limiter
string
session.cache_expire
integer
session.use_trans_sid
boolean
Note: 基于 URL 的会话管理比基于 cookie 的会话管理有更多安全风险。例如用户有可能通过 email 将一个包含有效的会话 ID 的 URL 发给他的朋友,或者用户总是有可能在收藏夹中存有一个包含会话 ID 的 URL 来以同样的会话 ID 去访问站点。 自 PHP 7.1.0 开始,透明 SID 开始使用完整的 URL 绝对路径,例如 https://php.net/。 在此之前 PHP 只会使用相对路径。使用 session.trans_sid_hosts 定义重写的目标 host。
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
Note: PHP 5.4.0 中已经移除。
session.bug_compat_warn
boolean
Note: PHP 5.4.0 中已经移除。
session.sid_length
integer
Compatibility Note: Use 32 instead of session.hash_function=0 (MD5) and session.hash_bits_per_character=4, session.hash_function=1 (SHA1) and session.hash_bits_per_character=6. Use 26 instead of session.hash_function=0 (MD5) and session.hash_bits_per_character=5. Use 22 instead of session.hash_function=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 to set an appropriate value for 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.
Note: 如果要符合 XHTML,去掉 form 项并在表单字段前后加上 <fieldset> 标记。
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 引进的。
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.