我刚刚从一个共享的主机包移动到一个专用的云服务器,并上传了我的完全工作的网站,会话变量在页面之间传递到新的专用服务器,现在突然间会话变量正在丢失。有人能解释一下为什么会这样吗?
如果需要,我可以提供一些更多的代码,但我认为这应该足够了。
我也试着在一个页面上设置一个变量,然后在同一页面上显示它,这是有效的,但我不知道如果这个值甚至被保存在会话中,因为它是在同一页面上。
我知道PHP的版本已经从5.2.17(共享)到5.3.3(专用),但我已经在我的本地机器上测试了这些不同的PHP版本,会话变量没有任何问题。这是我给你的两页纸。
page1.php
<?php
session_start();
if (!isset($_SESSION['initiated']))
{
session_regenerate_id();
$_SESSION['initiated'] = true;
}
include_once "header_selector.php";
$_SESSION['duper'] = "Active sessions variable";
page2.php
<?php
ob_start();
session_start();
include_once "header_selector.php";
$duper = $_SESSION['duper'];
echo "Model: " . $duper;
1)你的$_SESSION存储很可能是不可写的
2)你调用了ob_start()而没有相应的ob_end_flush()。当您移动主机和PHP版本时,您可能已经更改了PHP .ini文件,并且可能会通过设置将其搞砸。
3)你不调用ob_end_flush()在header_selector.php是你吗?