session 在生成的文件之外始终为空
Posted
技术标签:
【中文标题】session 在生成的文件之外始终为空【英文标题】:session is always empty outside of the file where is generated 【发布时间】:2012-11-02 00:30:38 【问题描述】:当我在另一个页面中尝试 var_dump
时,为什么会得到一个空的会话数组?
在服务器中,会话存储没有任何内容,只有 id 的名称。
使用 cookie 一切正常。有时(是的,有时),我重新启动服务器,然后会话也运行良好。什么可能导致此问题?
也许是 php 5.1.6 的错误?还是服务器配置有问题?
index_2.php
<?php
session_start();
$_SESSION['xxx'] = "tessstsse";
var_dump($_SESSION);//here show the correct session
header( 'Location: index_3.php');
index_3.php
<?php
session_start();
var_dump($_SESSION);
这个输出将是:
array
empty
【问题讨论】:
在两个脚本中执行echo session_id();
。如果 ID 发生变化,那么您遇到了 cookie 问题,并且每次都会获得一个新的/干净的会话。
@MarcB 我在两个文件中有相同的 session_id。
还要检查是否有过度热情的清理脚本删除会话文件,和/或 php(session.gc_maxliftime 和公司)中的会话到期设置太快了
也许你应该检查 /var/php_sessions 中的会话保存路径是否可被 Web 服务器写入。
@MarcB 这是我服务器中会话的配置:tny.cz/b841923f
【参考方案1】:
试一试..如果可行,我会重新检查您的代码,否则可能是您的服务器有问题...
page1.php
<?php
session_start();
$_SESSION['auth'] = "true";
$_SESSION['superhero'] = "batman";
?>
<a href="page2.php">Click here</a>
page2.php
<?php
session_start(); // start the session before using it
//echo $_SESSION['auth']; // will output 'true'
print_r($_SESSION);
?>
destroy.php
<?php
session_start(); // start the session before using it
session_destroy(); // deletes the current session..
?>
【讨论】:
它通常应该输出一个包含 auth 和 superhero 的数组。我会尝试把 session_destroy();在一个页面中 - 运行它 - 然后从上面运行我的代码,看看是否有任何变化。我会将 session_destroy() 添加到我上面的代码中。 我看不到销毁会话将如何解决问题。 我认为您对当前会话有疑问。删除当前的并创建一个新的将是值得的。这样,您将能够缩小问题所在的范围。例如,如果您无法创建新会话,则可能是您没有足够的权限。这不会修复您当前的会话,但如果当前会话有问题,它会给您一个干净的状态。【参考方案2】:我的网络服务器没有空间来存储会话内容。
0% 的可用空间。删除一些数据,问题就解决了。
【讨论】:
以上是关于session 在生成的文件之外始终为空的主要内容,如果未能解决你的问题,请参考以下文章