【问题标题】:nginx / php / php-fpm | Problem with storing cookiesnginx / php / php-fpm |存储 cookie 的问题
【发布时间】:2010-11-20 16:55:37
【问题描述】:

您好。

我现在正在重新安装我的整个专用服务器。我去了

-Ubuntu Server 10.10

-PHP 5.3.3.1

-php-fpm

-nginx

现在,几乎一切似乎都可以正常工作,尽管会话仍然存在一个问题。无论我做什么,会话似乎都无法正确存储自己(并且它们在之前的设置中确实如此)。

基础应用程序是phpBB board。当我登录时,没关系 - 尽管它为所有 URL 附加了额外的 SID 参数。

论坛/index.php?sid=f506ccd42065322f61cb56fc6df6557a

您可以毫无问题地浏览论坛,但如果您删除 SID 参数,您将被注销。我想,也许会话没有存储在 cookie 中,而是存储在 URL 中,但 php 配置似乎很好。

phpMyAdmin 也会出现同样的情况 - 当我删除 token 参数时,我也会被注销。

与此同时,cookie 似乎还是被创建了,好像它们没有被使用,或者被立即删除。

我对此越来越感到沮丧,也许有人知道如何解决这个问题?我会发布任何必要的配置文件。

我认为这可能是 suhosin 的问题(之前的设置中没有安装它),但我不知道。 PHP 配置是开箱即用的 atm,我只修改了 nginx 配置。

【问题讨论】:

标签: php session cookies nginx


【解决方案1】:

各种会话cookie参数都是documented here。

尤其要检查“session.use_cookies”、“session.use_only_cookies”和“session.trans_sid”设置。如果 PHP 无法成功创建 cookie,它将回退到 trans_sid 方法(这就是您所看到的:会话 ID 作为查询/表单变量传递)。

您可以在 Firefox 中使用 Firebug 和 HTTPFox 轻松检查是否有任何与 cookie 相关的标头出现。两者都可以让您查看请求的传入/传出标头。

【讨论】:

    【解决方案2】:

    可以在PHP-fpm error log 中找到一些有用的信息吗?在php.ini中设置参数

    error_reporting = E_ALL & ~E_DEPRECATED
    log_errors = On
    error_log = ;
    

    一些文件php可以写入或“syslog”

    也尝试查看nginx error log。

    PHP-fpm process-owner 是否具有对sessions dir 的写入权限?在php.ini 上查看session.save_path session dir

    【讨论】:

    • 日志中没有任何内容,但在完成服务器上的所有工作并重新启动所有服务后,神奇地开始工作。猜猜我一开始搞砸了什么:)
    【解决方案3】:

    查看您的 session_path 是否正确并具有正确的权限。这解决了我的问题。

    【讨论】:

      【解决方案4】:

      另外,请注意进程的用户和组,因为这会影响创建会话文件时使用的默认权限。如果设置为默认值,它可能会创建为root,然后下次访问会话文件时就无法读取了。

      在您的php-fpm.conf 中查找Unix user/group 的进程 并设置用户和组为php-fpm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-16
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        • 2020-08-08
        • 1970-01-01
        相关资源
        最近更新 更多