在session_start()创建每次刷新新的会话[复制](session_start() cre

2019-10-21 04:40发布

这个问题已经在这里有一个答案:

  • 如何解决“头已经发送”错误在PHP 11个回答

我有一个问题, 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看问题,为自己,如果你想。

Answer 1:

如果您的会话目录(最喜欢如你所说的/ tmp)不写的话,将无法保存,将有每次再生一个新的。 这里是你如何可以验证:

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

如果是这样的话,你就需要有服务器管理员给什么都用户你的服务器运行的权限写入/ tmp目录。



文章来源: session_start() creates new session every refresh [duplicate]