5

我有一个问题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

当我加载页面时,我得到以下信息:

加载时的会话 ID 是会话 ID 当前是 ed320bc5e24c871c9db8ea30e6796c14(或变体)

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

加载时的会话 ID 是会话 ID,当前为 fbd69d01d511a7be382799dca7279a86(或变体)

会话 ID 在session_start()被调用之前始终为空白,并且始终是新的session_id()

它在所有浏览器中都执行此操作,并且我已检查以确保 cookie 已打开。

会话保存路径为/tmp. 我不确定它到底在哪里,但是通过我的根目录和所有其他目录,我找不到会话文件(假设它看起来像 sess_fbd69d01d511a7be382799dca7279a86)。

所以我认为保存路径发生了一些事情,但在这方面太新了,无法确定,而且服务器管理员相当无助。诊断问题的下一步应该是什么?服务器正在运行 5.3.22。

phpinfo在这里

谢谢你的帮助。

ps 如果您愿意,您可以访问 pcm.pcmxa.com 亲自查看问题。

4

1 回答 1

5

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

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

如果是这种情况,您需要让服务器管理员为您的网络服务器运行的任何用户授予写入 /tmp 目录的权限。

于 2013-04-09T20:29:44.237 回答