PHP 会话目录不断填充直到溢出

Ton*_*y H 2 php php.ini

我的 PHP 会话数据文件夹有问题。它似乎没有到期会话并且已经达到某种限制,大概是目录中文件的文件系统限制。由于磁盘空间不足,涉及写入会话的请求失败并显示致命错误。

我通过将 指向sessions.save_path一个新目录来临时解决它。

想知道我php.ini有什么问题阻止会话过期。

我也尝试使用截断sessions目录,rm但它似乎永远挂起?

问题目录:

drwxr-xr-x  2 www-data www-data 294215680 Jan  5 13:42 sessions
Run Code Online (Sandbox Code Playgroud)

会话部分php.ini

[Session]
session.save_handler = files
session.save_path = "N;/var/www/data/sessions"
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 2592000
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
Run Code Online (Sandbox Code Playgroud)

USD*_*att 5

session.save_path = "N;/var/www/data/sessions"
Run Code Online (Sandbox Code Playgroud)

这似乎没有引起问题(因为 PHP 显然正在生成会话),但不正确。

此选项的两种格式是:

/path/to/sessions
N;/path/to/sessions
Run Code Online (Sandbox Code Playgroud)

整数 N确定有多少子目录指定路径下创建的,有用的,如果你想到了很多的会议文件,会议文件,以分布在大量的目录。(您已经发现系统不喜欢一个目录中的大量文件......)

session.gc_probability = 0
Run Code Online (Sandbox Code Playgroud)

这很可能是主要问题(除非 PHP 自动处理有人将其错误地设置为 0)

清除发生的概率由 定义probability/divisor0/1000是 0,所以可能永远不会运行。

编辑:关于删除文件,您可能只需要等待它完成。如果它是数百万个文件,它可能看起来像是挂了。