温馨提示×

CentOS怎么配置PHP会话

小樊
56
2026-07-19 11:20:35
栏目: 编程语言

CentOS 上配置 PHP 会话(Session),通常包括 会话存储方式、存储路径、权限、生命周期、安全选项 等。下面分常见场景说明。


一、确认 PHP 版本与配置文件位置

1. 查看 PHP 版本

php -v

2. 查找 php.ini 路径

php --ini

常见路径:

  • CentOS 7 / 8:
    • /etc/php.ini
    • /etc/php.d/*.ini
  • 使用 PHP-FPM:
    • /etc/php-fpm.d/www.conf

二、配置 PHP 会话基本参数(php.ini)

编辑配置文件:

vim /etc/php.ini

1. 会话存储目录(重要)

session.save_handler = files
session.save_path = "/var/lib/php/session"

⚠️ 注意:

  • 目录必须存在
  • Web 服务器用户必须有写权限

创建并设置权限

mkdir -p /var/lib/php/session
chown -R apache:apache /var/lib/php/session   # Apache
# 或
chown -R nginx:nginx /var/lib/php/session     # Nginx + PHP-FPM
chmod 700 /var/lib/php/session

2. 会话生命周期

session.gc_maxlifetime = 1440   ; 秒(默认 24 分钟)
session.cookie_lifetime = 0     ; 浏览器关闭失效

如果你希望会话保持更久:

session.gc_maxlifetime = 86400

3. 会话安全配置(推荐)

session.use_strict_mode = 1
session.use_only_cookies = 1
session.cookie_httponly = 1
session.cookie_secure = 1        ; HTTPS 环境才开启
session.use_trans_sid = 0

三、使用 PHP-FPM 时的会话配置

如果使用 PHP-FPM,也可以在:

vim /etc/php-fpm.d/www.conf

设置:

php_value[session.save_path] = /var/lib/php/session
php_value[session.gc_maxlifetime] = 86400

四、重启服务使配置生效

Apache

systemctl restart httpd

Nginx + PHP-FPM

systemctl restart nginx
systemctl restart php-fpm

五、验证 PHP Session 是否生效

创建测试文件:

<?php
session_start();
$_SESSION['test'] = 'CentOS PHP Session OK';
echo $_SESSION['test'];

访问页面后检查:

ls /var/lib/php/session

六、常见问题排查

1. Session 文件无法写入

tail -f /var/log/httpd/error_log
# 或
tail -f /var/log/php-fpm/error.log

常见原因:

  • 权限不足
  • SELinux 限制

2. SELinux 问题(CentOS 常见)

临时关闭测试:

setenforce 0

永久解决(推荐):

setsebool -P httpd_unified 1

七、进阶:使用 Redis / Memcached 存储 Session(可选)

Redis 示例

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ Web 服务(Apache / Nginx)
  • ✅ PHP 运行方式(mod_php / PHP-FPM)

我可以给你一份 完全贴合你环境的配置方案

0