每次页面加载时重置PHP会话变量

每次页面加载时重置PHP会话变量,php,session,Php,Session,每次加载新页面时,会话变量都会重置 我在每个脚本中都包含了一个header.php文件,其顶部有session\u start()函数,如下所示: session_start(); 错误报告(E_错误); 我还进行了检查,以确保会话id在所有页面上都是相同的,并且是相同的 我检查了web主机的php_ini配置文件,发现会话.save_path设置为/tmp。我把它改成了/var/lib/session/,就像有人在这个网站上建议的那样,我开始在代码中收到奇怪的警告 警告:session_st

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

我在每个脚本中都包含了一个
header.php
文件,其顶部有
session\u start()
函数,如下所示:

session_start();
错误报告(E_错误);
我还进行了检查,以确保
会话id
在所有页面上都是相同的,并且是相同的

我检查了web主机的php_ini配置文件,发现
会话.save_path
设置为
/tmp
。我把它改成了
/var/lib/session/
,就像有人在这个网站上建议的那样,我开始在代码中收到奇怪的警告

警告:session_start()[function.session start]:打开(/var/lib/php/session//sess_97fca6d21c7ffa8333cd42ea87f2eac,O_RDWR)失败:第2行/home/mforsyth/public_html/Beesting/header.php中的权限被拒绝(13)

我不知道该怎么解决这个问题。任何帮助都是有用的。如果需要更多的细节,请让我知道


编辑:我已将文件夹更改回/tmp,并已确保我可以读取/写入该文件夹,并且我可以。我还在每一页上重复会话id,结果都是一样的。此外,会话似乎只持续一页

发生的事情是,php试图使用它写入ThinkingMonkey提到的目录的一些信息来跟踪您的会话

由于php/webserver进程的用户无法写入目录,因此此操作失败。因此,您无法获得会话


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

发生的情况是,php试图使用它写入ThinkingMonkey提到的目录的一些信息跟踪会话

由于php/webserver进程的用户无法写入目录,因此此操作失败。因此,您无法获得会话


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

谢谢您的帮助。在进一步调查并与我的主机讨论此事后,我发现问题不在于写入/tmp文件夹的能力。事实上,真正的问题是,我的header.php include文件中有一个javascript函数

function logout()
{
    <?
session_destroy();
?>
alert("you have been logged out");
}
函数注销()
{
警报(“您已注销”);
}

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

谢谢你的帮助。在进一步调查并与我的主机讨论此事后,我发现问题不在于写入/tmp文件夹的能力。事实上,真正的问题是,我的header.php include文件中有一个javascript函数

function logout()
{
    <?
session_destroy();
?>
alert("you have been logged out");
}
函数注销()
{
警报(“您已注销”);
}

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

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

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

那就应该成功了

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

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

那就应该成功了

也有同样的一般问题,结果出于某种原因,我使用JavaScript删除会话cookie

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

有相同的一般问题,结果出于某种原因,我使用JavaScript删除会话cookie

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

似乎您对文件夹
/var/lib/session/
没有适当的权限。您的浏览器用户(通常是
www-data
apache
)应该对用于会话存储的目录具有写入权限。似乎您对文件夹
/var/lib/session/
没有适当的权限。您的浏览器用户(通常是
www-data
apache
)应该对用于会话存储的目录具有写入权限。Javsscript和PHP是互斥的语言,除了PHP标记中的部分外,PHP中的JS函数将被忽略,因此每当PHP引导该脚本时,该部分将始终为真。PHP将始终在JS查看之前加载并运行。Javsscript和PHP a作为互斥语言,除了PHP标记中的部分外,PHP中的JS函数将被忽略,因此每当PHP引导该脚本时,该部分将始终为真。PHP将始终在JS进入之前加载并运行。