【问题标题】:Symfony 2.8 can't write in /var/lib/php/sessions/Symfony 2.8 无法写入 /var/lib/php/sessions/
【发布时间】:2017-12-31 17:01:36
【问题描述】:

我在 Symfony 功能方面有点困惑。我有一个网站应该在/var/lib/php/sessions/ 中编写会话。我在那里很困惑,因为在 /var/www/html/myproject/ 中,一切都是www-data:www-data 的递归属性(是的,我使用的是 Apache)。但是 /var/lib/php/sessions/ 的所有者是 root,所以当 Apache 尝试在那里写入时,我收到关于在该目录中写入权限的 500 服务器错误。

我在这里意见不一。有些人建议我修改config.yml 以管理项目目录中的会话,而其他人则说这是一个非常糟糕的做法。但是,如何在没有文件权限错误的情况下获取所有针对 /var/lib/php/sessions/ 的内容?

这是我通过 Apache URL 得到的:

哎呀!发生错误
服务器返回“500 内部服务器错误”。
东西坏了。请让我们知道发生此错误时您在做什么。我们会尽快修复它。给您带来的不便,我们深表歉意。

这是我通过 php 开发网络服务器得到的:

警告:SessionHandler::read(): open(/var/lib/php/sessions/sess_u3eg1842nlpkbm0rvddrq37dc2, O_RDWR) 失败:权限被拒绝 (13)
500 内部服务器错误 - ContextErrorException

我真的希望你能帮助我。

【问题讨论】:

  • 您是否尝试将会话保存路径设置为 www-data 可以写入的位置?不在您的公共文件夹中,但可能是 /var/www/sessions/,例如。
  • 我避免这样做,因为办公室的开发人员说这是一种不好的做法。我现在就去做,看看是否可行。有没有办法在/var/lib/php/sessions/ 中实现这一目标?

标签: php apache session symfony-2.8


【解决方案1】:

要创建文件,用户必须对目录具有写入和执行权限。

mkdir /tmp/foo
chmod 300 /tmp/foo
touch /tmp/foo/bar
test -e /tmp/foo/bar

在您的情况下,将“其他”权限设置为 3 将允许 www-data 对其进行写入。 chmod o+wx /var/lib/php/sessions/

要删除文件,用户还必须对该目录具有写入和执行权限。

为了列出目录中的文件名,用户必须对该目录具有读取权限。请注意,如果您知道文件名,则不需要具有列出目录的权限。

为了列出文件的属性,用户必须对该目录具有执行权限。

在我的电脑上/var/lib/php/sessions 的权限是drwx-wx-wt。 t 表示执行和粘滞位。目录的粘性位意味着只有所有者可以删除它。

请参阅Unix File and Directory Permissions and Modes by Wayne Pollock 了解更多信息。

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2013-12-07
    • 1970-01-01
    • 2021-02-23
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多