【发布时间】: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