Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修改session.save_路径(其中会话数据保存在服务器上)后,会话\u destroy不工作_Php_Session - Fatal编程技术网

Php 修改session.save_路径(其中会话数据保存在服务器上)后,会话\u destroy不工作

Php 修改session.save_路径(其中会话数据保存在服务器上)后,会话\u destroy不工作,php,session,Php,Session,我在我的网站根目录上创建了一个文件夹,其中会话数据存储在公共html之外。我这样做是为了让我的网站上的会话持续更长的时间,因为我遇到了一个问题,他们会在30分钟后超时。我尝试了很多方法来修复它,但在我尝试下面的代码之前,一切都不起作用。我正在使用以下代码创建持续一天的会话,该代码解决了会话在30分钟后超时的问题: ini_set('session.save_path', '/home/server/.sessionsData'); ini_set('session.gc_maxlifetime'

我在我的网站根目录上创建了一个文件夹,其中会话数据存储在公共html之外。我这样做是为了让我的网站上的会话持续更长的时间,因为我遇到了一个问题,他们会在30分钟后超时。我尝试了很多方法来修复它,但在我尝试下面的代码之前,一切都不起作用。我正在使用以下代码创建持续一天的会话,该代码解决了会话在30分钟后超时的问题:

ini_set('session.save_path', '/home/server/.sessionsData');
ini_set('session.gc_maxlifetime', 86400); 
ini_set('session.cookie_lifetime', 86400);
ini_set('session.cache_expire', 86400);
ini_set('session.name', 'website');

session_start(); // Session ready to go!
进行此更改后,会话在30分钟后不再超时,但我遇到了一个新问题,即我销毁会话的“注销代码”不再像以前那样结束会话。以下代码是我用来注销和销毁会话的代码,但它不再像以前那样工作:

session_start();
session_destroy();

header("location: https://website.com");
我应该如何做才能使会话被销毁,并删除存储在我的“/home/server/.sessionsData”文件夹中的相应会话数据?如果我进入文件夹并直接删除会话数据文件,它将在用户浏览器中结束会话


提前感谢您对此进行研究。

使用
会话\u unset
会话\u destroy
是实际清除会话数据的有效方法

session_start();
session_unset(); //--> frees all session variables currently registered.
session_destroy(); //--> destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie.
我还阅读了PHP手册上的评论,以下内容对顽固的浏览器有帮助:

session_write_close(); //--> End the current session and store session data.
setcookie(session_name(),'',0,'/');
session_regenerate_id(true);  //--> replace the current session id with a new one, and keep the current session information.
如评论中所述
也许您的ini\u set()代码,或者至少是路径更改部分,也需要在您的注销脚本中。

以代码形式:

ini_set('session.save_path', '/home/server/.sessionsData');
session_start();
session_destroy();

header("location: https://website.com");

也许您的
ini\u set()
代码,或者至少是路径更改部分,也需要在您的注销脚本中。它成功了!你完全正确。我添加了ini_集('session.save_path','/home/server/.sessionsData');我的注销脚本,它修复了它。如果你想用你的评论来回答这个问题,我会把它标记为答案。非常感谢你!好啊我想如果我把答案贴出来,你会接受的。请看下面。谢谢你的信息,我添加了这些额外的行。