我现在使用 php session 来存储值并在页面之间传递它。
我进行基本检查,例如确保session_start()
在每个页面上调用并检查浏览器中设置的 sessionid cookie,但该值在页面之间不是持久的。
例如,我设置$_SESSION["abc"]='abc'
在一页上,但是当我在另一页上打印时,它为空。
我注意到使用文件存储cookie值时,没有在指定路径创建相应的cookie文件。未创建会话文件的原因可能是什么?
这对你有用吗?
<?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')));
注意你是否在每一页的末尾销毁。请删除它,因为当你在每一页上销毁会话时,会话中没有持久性。此外,如果您使用某种注销代码,请在该部分代码上销毁该会话。
您可以更改会话路径(如果允许)并在 .htaccess 中设置 0777 权限
php_value session.save_path /home/your_domain.gr/public_html/tmp
错误日志也有什么?
您的服务器目录中有一个目录名称“tmp”,它用于保存会话临时文件,确保该文件夹具有读写权限。