PHP 应该将会话写入哪里?

PHP 应该将会话写入哪里?

刚刚在 Centos 6.4 上安装了 PHP 5.4,使用的是 Apache 2.2 VPS,然后收到错误,提示权限被拒绝打开会话。php.ini 显示session.save_path = "/var/lib/php/session"。我是否要将/var/lib/php/session权限设置为 0777?或者让 Apache 以给定用户身份运行,然后将该用户权限授予/var/lib/php/session。我记得过去曾将会话路径更改为/tmp,不知道这是否是更好的策略。我应该在哪里设置 PHP 以将会话写入?

答案1

在灵活性和(甚至更重要的)安全性方面,您应该使用 suEXEC + FCGId 或类似方法将 Apache 配置为以每个虚拟主机的另一个非特权用户身份运行脚本(阅读:php 进程)。然后,您可以为每个用户分配一个自己的 php.ini,并将会话路径设置为仅用户可写的路径(例如在用户/家目录)。关于这个常见设置的教程有很多,只需搜索“centos apache suexec php”

这可能是您问题的最复杂的解决方案,但它也考虑到了安全性和未来的一定灵活性。

答案2

使 Apache 以用户/组 apache/apache 身份运行。CentOS 将自动为 正确设置权限/var/lib/php/session

答案3

如果有的话mod_fcgid,那么 apache 用户将不能用作/var/lib/php/session用户/组所有者。

答案4

会话应该用 Memcached 存储。

session.save_handler = memcached 
session.save_path = "localhost:11211"

相关内容