我有一个在 CentOS 5 上运行带有 Plesk 9 的 VPS。
我的网站在 FastCGI 上运行。
我在读取/写入会话时遇到问题。在我的服务器上,error_log
我收到以下错误:
(...) Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
(...) open(/var/lib/php/session/sess_v8g5rt6p83b9one3mlg9sh9ts0, O_RDWR) failed: Permission denied (13) in Unknown on line 0
我很想改变
session.save_path = "/var/lib/php/session"
到
session.save_path = "/tmp"
问题是/tmp
有 chmod 777,所以我不确定这是否是最好的方法?
更新
该session
目录具有以下权限: -rwxrwx---
用户root
组apache
答案1
为什么不修复 上的权限/var/lib/php/session
?此目录只需对 httpd 用户具有写入权限(具体取决于您的操作系统,可能类似于www-data
或;在您的 中apache
查找指令)。User
httpd.conf
命令看起来类似于:
chown apache /var/lib/php/session
chmod 700 /var/lib/php/session
这使得该目录可由apache
用户写入,且通常其他所有人都无法访问。
答案2
在我切换到使用 fcgi 运行 php 以解决权限问题后,发生了这种情况。在此更改之前,php 脚本以 apache:apache 的身份运行,这会导致权限错误(除非您chmod 777
拥有所有目录,这非常危险)。切换到运行 php 的 fcgi 方法后,php 脚本现在以用户组 psacln 的身份运行,但 /var/lib/php/session 目录仍归 root:apache 所有。我的解决方案是chown root:psacln /var/lib/php/session ; chmod 770 /var/lib/php/session