php
system_error
ai_generated
true
警告: session_start(): Session GC 失败,位于 /var/www/app/src/Session/SessionManager.php:35
Warning: session_start(): Session GC failed in /var/www/app/src/Session/SessionManager.php:35
ID: php/session-gc-probability-high
80%修复率
86%置信度
1证据数
2024-01-10首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| PHP 7.4 | active | — | — | — |
| PHP 8.0 | active | — | — | — |
| PHP 8.1 | active | — | — | — |
| PHP 8.2 | active | — | — | — |
| PHP 8.3 | active | — | — | — |
根因分析
PHP 的会话垃圾回收(GC)失败,原因是会话保存路径的权限问题、磁盘已满或 GC 概率配置不当导致触发过于频繁。
English
PHP's session garbage collection (GC) fails due to permission issues on the session save path, disk full, or a misconfigured GC probability that triggers too frequently.
官方文档
https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability解决方案
-
Fix permissions on the session save path: run 'sudo chmod 733 /var/lib/php/sessions' and 'sudo chown www-data:www-data /var/lib/php/sessions' (adjust user/group as needed).
-
Check disk space with 'df -h' and free up space if necessary. If using tmpfs for sessions, ensure enough memory is allocated.
-
Reduce GC probability by setting session.gc_probability=1 and session.gc_divisor=1000 in php.ini to trigger GC once every 1000 requests, reducing load.
无效尝试
常见但无效的做法:
-
80% 失败
Setting session.gc_probability=0 disables GC entirely, which prevents the warning but leads to session file accumulation and potential disk space issues.
-
65% 失败
Increasing session.gc_divisor to 1000 reduces GC frequency but does not fix underlying permission or disk problems; the warning may still appear sporadically.