我现在使用php会话来存储值并在页面之间传递它。
我进行基本检查,例如确保在每个页面上调用session_start()
并检查在浏览器中设置的sessionid cookie,但该值在页面之间不是持久的。
例如,我在一个页面上设置了$_SESSION["abc"]='abc'
,但是当我在另一个页面上打印时,它是空的。
我注意到在使用file存储cookie值时,未在指定路径创建相应的cookie文件。可能是什么原因导致会话文件没有被创建?
答案 0 :(得分:2)
这对你有用吗?
<?php
session_start();
if (!isset($_SESSION['foo']))
$_SESSION['foo'] = 'hello';
var_dump($_SESSION['foo']);
如果您多次加载该页面,您是否看到过hello
消息?
如果是,那么你的问题与你的代码有关,这意味着你可能会以某种方式破坏会话值,但如果上述方法不起作用,可能是你的session.save_path
不可写。
这给你带来了什么?
<?php
var_dump(is_writable(ini_get('session.save_path')));
答案 1 :(得分:2)
请注意,如果您在每个页面的末尾都要进行销毁。请将其删除,因为当您在每个页面上销毁会话时,会话中没有持久性。此外,如果您使用某种退出代码,请在该部分代码上销毁该会话。
答案 2 :(得分:0)
服务器目录中有一个目录名“tmp”,它用于保存会话临时文件,确保该文件夹具有读写访问权限。
答案 3 :(得分:0)
您可以更改会话路径(如果允许)并设置0777权限 在.htaccess
php_value session.save_path /home/your_domain.gr/public_html/tmp
错误日志还有什么内容吗?