【问题标题】:error when saving php sessions in project's directory在项目目录中保存 php 会话时出错
【发布时间】:2017-06-07 00:15:35
【问题描述】:

在我的项目的配置文件中,我有:

session:
        handler_id:  session.handler.native_file
        save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"

"%kernel.root_dir%/../var/sessions 属于 wwww-data(是的,php-fpm 以 www-data 运行)。

当项目运行时,会在该目录中创建一个 (empty) 会话文件,但显然 php/symfony 在实际读取/写入它时遇到了麻烦,尽管能够正确创建它。这是刚刚创建的空会话文件(在此请求之后没有运行其他进程):

请求终止,引发异常:

会话数据文件不是由您的 uid 创建的。

我找到了这个answer(和一个this),并且通过这样做(将我的会话的save_path 设置为"/var/lib/php/sessions" 我能够继续(我可以看到我的会话文件不仅已创建,但其内容实际上已到位),但我试图了解为什么它无法将会话文件保存在自定义位置。

在我的 PHP 配置中,我看到我将 session.save_path 设置为 /var/lib/php/session,但我希望我能够在执行时覆盖它。

真正让我恼火的是会话文件被创建(所以文件权限应该没问题),但没有写入。

我在 nginx + php-fpm (7.0) 之上运行 Symfony 3.2.2。

为什么会这样?我应该使用任何其他设置,以便 php 能够覆盖此配置并将其会话文件写入其他地方吗?

从跟踪中我看到:

  • 调用NativeSessionStorage ->start(),并执行session_start(返回true
  • 然后调用SessionHandlerProxy ->read($sessionId),调用$this->handler->read($sessionId);时抛出异常。

【问题讨论】:

  • 你能提供一些关于你的操作系统和 symfony 所在文件系统的信息吗?
  • 你确定你已经使用 Symfony guide 设置了正确的权限吗? (更具体地说是setfacl 的部分)

标签: php session symfony fpm


【解决方案1】:

使用标准文件夹,即:/var/lib/php/session

避免使用/tmp

【讨论】:

    【解决方案2】:

    我能够重现完全相同的错误,创建会话文件但抛出“会话数据文件不是由您的 uid 创建的。”,但我不确定这是否是您的情况。

    无论如何,我的猜测是您使用 nfs 服务器来保存您的代码,但您在本地开发和运行 nginx。您将 nfs 挂载到服务器目录以将您的代码同步到服务器(在我之前的工作中我们也有过相同的操作)。

    因此,您将 nfs 服务器目录挂载到本地目录。发生的情况是 php 使用用户 www-data 创建您的会话文件,但该用户在服务器上的 uid 与您的本地计算机不同。所以文件被创建了,你看到了正确的所有者,但是它的 uid 是不同的。

    检查:

    link

    link

    这只是我的最佳猜测。如果是这样,请告诉我,也许我可以帮助 nfs 用户映射。希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      如果您想使用文件来保存会话,最佳做法是在与 Web 文件相同所有者的目录中执行此操作,而不是在“公共”文件夹中。例如,这可能意味着从 web 根目录开始的一个目录:

      • /home/myuser/sessions/
      • /home/myuser/public_html/

      这样,您的会话是安全的(无法从 Web 访问),与同一服务器中其他 Web 的会话分开,并且您确信可以管理该目录中的文件。

      【讨论】:

        猜你喜欢
        • 2019-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        相关资源
        最近更新 更多