【问题标题】:Session variables not persistent in PHP5/Apache2/Ubuntu12会话变量在 PHP5/Apache2/Ubuntu12 中不持久
【发布时间】:2014-03-30 16:51:10
【问题描述】:

我找不到这个特定的问题。我有一个网站,它使用会话变量(在 PHP 中)来了解访问者是否正在进入该网站。如果他是新来的,那么我会将他重定向到检测到的语言。但如果他不是新人,你可以让他去任何他想去的地方(甚至是其他语言的页面)。

问题是用于实现此($_SESSION["knownvisitor"]) 的变量不是持久的。我已经在其他服务器上测试了同一个网站,它工作得很好,所以我很确定这是一个会话配置问题。有问题的服务器是带有 Apache 2.2.22 和 PHP 5.3.10 的 Ubuntu Server 12.04.4。

会话存储在/var/lib/php5,我可以看到那里的文件,但它们是空的。会话文件属于www-data 并具有以下权限-rw-------。另一方面,该目录属于“root”并拥有这些权限drwx-wx-wt

按照某些论坛的建议,我尝试在重定向之前使用session_write_close(),但没有成功。重定向类似于header('Location: [URL]')

有人知道吗?谢谢!

编辑:我将添加脚本的代码,以便您了解它的基本行为。这是我在我的网络中所有文件的开头放置的内容:

function detectedlang($availlangs)
{
 // FUNCTION STUFF HERE TO FIND OUT WHICH IS THE LANGUAGE OF THE VISITOR
 return $detectedlang;
}

session_start();

if (!isset($_SESSION["knownvisitor"]))
{
 $detectedlang = detectedlang(array("en", "es"));
 $_SESSION["knownvisitor"] = true;
 header("Location: http://www.mysite.com/".$detectedlang);
}

【问题讨论】:

    标签: php apache session ubuntu session-variables


    【解决方案1】:

    会话只存在session.gc_maxlifetime 中定义的时间,我认为默认为 20 分钟

    如果您想检查回访者,您需要设置 cookie

    【讨论】:

    • 您好,谢谢!我用我的脚本检查的是:访问者的当前综合浏览量是第一个吗?如果是,我设置会话变量。当他点击第二页(通过链接)时,会话变量就在那里,我知道这不是他连续(或会话)访问的第一页。我不想知道他以后是否也会返回该网站。
    • 好的,我真的不知道问题可能是什么,我假设你打电话给session_start(),因为你说它在不同的服务器上工作
    • 是的,安德鲁,我做到了,并且脚本正在其他服务器上运行。我猜这个问题与 PHP 存储会话有关,但我可以弄清楚如何解决这个问题。还是谢谢你!
    【解决方案2】:

    检查session.save_handler : files 也可以使用error_reporting(E_ALL);

    【讨论】:

    • 好的,谢谢。错误报告说在数组上找不到索引“knownvisitor”。 “save_handler”已正确设置为“文件”。
    【解决方案3】:

    感谢 serverfault.com 的好心人,我得到了解决。问题是文件夹/var/lib/php5 归根用户所有,其他任何人都无法读取(drwx-wx-wt)。这就是 PHP(用户 www-data)无法从那里的文件访问和检索会话数据的原因。

    组和权限的简单更改使其运行:

    chgrp www-data /var/lib/php5
    chmod g+rwx /var/lib/php5
    

    也就是说,将目录的组更改为www-data,并允许其成员读取内容。

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 2014-07-28
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多