Session_start()每次刷新都会创建新的会话


session_start() creates new session every refresh

我有一个问题与session_start()。每次刷新/加载页面,都会创建一个新的会话。

下面是代码:
<?php
    $bob = session_id();
    echo "Session ID on load is ".$bob;
    echo "<br>";
    if($bob==""){
        session_start();
        $bob = session_id();
        echo ' session ID currently is '.$bob;
    }
// a bunch more stuff

当我加载页面时,我得到以下内容:

Session ID on load is会话ID当前为ed320bc5e24c871c9db8ea30e6796c14(或变体)

如果我刷新页面,我得到:

Session ID on load is会话ID当前为fbd69d01d511a7be382799dca7279a86(或变体)

session_start()被调用之前,会话Id总是空的,它总是一个新的session_id()

它在所有浏览器中都是这样做的,我已经检查了确保cookie是打开的。

给出会话保存路径为/tmp。我不确定确切的位置,但通过我的根目录和所有其他目录,我找不到会话文件(假设它看起来像sess_fbd69d01d511a7be382799dca7279a86)。

所以我认为有一些东西正在与保存路径,但我太新在这知道肯定,服务器管理员是相当无益的。诊断问题的下一步应该是什么?服务器运行5.3.22.

phpinfo is here

谢谢你的帮助。

如果你愿意的话,你可以访问pcm.pcmxa.com亲自查看这个问题。

如果您的会话目录(如您所说的最像/tmp)不可写,那么它将无法保存,并且每次都必须重新生成一个新目录。下面是验证方法:

if (!is_writable(session_save_path()))
{
 echo 'Session save path "'.session_save_path().'" is not writable!'; 
}

如果是这样的话,你需要让服务器管理员给你的web服务器运行的任何用户写/tmp目录的权限。