在 Ubuntu 下设置 PHP 会话(Session)时间,本质就是修改 PHP 的 session.gc_maxlifetime 以及相关的超时配置。下面按常见场景说明。
PHP 会话时间主要由以下参数控制(php.ini 中):
session.gc_maxlifetime = 1440
⚠️ 注意:
浏览器端 Cookie 失效时间 和 服务器端 Session 存活时间 是两个概念。
php --ini
常见路径:
/etc/php/8.1/apache2/php.ini(Apache)/etc/php/8.1/cli/php.ini(命令行)/etc/php/8.1/fpm/php.ini(Nginx + PHP-FPM)session.gc_maxlifetime = 3600
session.cookie_lifetime = 3600
示例:设置 1 小时
| 参数 | 说明 |
|---|---|
| session.gc_maxlifetime | 服务端 Session 存活时间 |
| session.cookie_lifetime | 浏览器 Cookie 存活时间(0 = 浏览器关闭失效) |
Apache:
sudo systemctl restart apache2
Nginx + PHP-FPM:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.cookie_lifetime', 3600);
session_start();
⚠️ 必须 在 session_start() 之前 设置
session.gc_maxlifetime = 1209600 ; 14 天
session.cookie_lifetime = 1209600
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
Redis 的 TTL 可精确控制会话时间。
gc_probability 和 gc_divisor 触发垃圾回收/var/lib/php/sessions如果你告诉我:
我可以给你精确配置命令。