PHP会话变量随每个页面加载重置

时间:2012-07-19 21:49:48

标签: php session

每次加载新页面时,我的会话变量都会重置。

我已将header.php文件包含在每个脚本中,并在最顶部使用session_start()函数,如下所示:

session_start();
error_reporting(E_ERROR);

我还检查过以确保所有网页上的session_id都相同,而且确实如此。

我查看了我的网站主机的php_ini配置文件,我发现session.save_path已设置为/tmp。我将其更改为/var/lib/session/,就像有人在本网站上建议的那样,我的代码中开始出现奇怪的警告。

  

警告:session_start()[function.session-start]:open(/ var / lib / php / session // sess_97fca6d21c7ffa8333cd42eaa87f2eac,O_RDWR)失败:中的权限被拒绝(13) /home/mforsyth/public_html/Beesting/header.php 在线 2

我不知道如何解决这个问题。任何帮助都会有用。如果需要更多细节,请告诉我。

编辑:我已将文件夹更改回/ tmp,并确保我可以读/写它,我可以。我也在每个页面上回应了会话ID,它们都是相同的。此外,会议似乎只持续一页

4 个答案:

答案 0 :(得分:2)

php会尝试使用它写入ThinkingMonkey提到的目录的某些信息来跟踪您的会话。

由于php / webserver进程'用户无法写入该目录,因此失败。因此,你没有得到一个会话。

找出正在运行该进程的用户,并授予他该目录的读/写权限。

答案 1 :(得分:1)

感谢您的帮助。在进一步调查并与我的主人讨论此事后,我能够得出结论,问题不是写入/ tmp文件夹的能力。实际上问题的真正原因是我的header.php包含文件中的javascript函数。

function logout()
{
    <?
session_destroy();
?>
alert("you have been logged out");
}

它避免了它在一个函数中的事实,可能是我的错,看到两种语言的编译方式不同。我做了一个简单的ajax调用来处理会话破坏,现在一切都很顺利。我想知道是否有其他人有类似的问题,如果这有助于他们。

答案 2 :(得分:0)

尝试重新启动webserver和php服务,如果是nginx / php-fpm,请尝试

root@server > service nginx restart
root@server > service php-fpm restart

应该做的伎俩!

答案 3 :(得分:0)

有同样的一般性问题,但由于某种原因,我使用JavaScript来删除会话cookie。

document.cookie = '[session_name]' +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';