在WEB服务器将共享移动到专用后,页面之间的会话变量丢失


Session variables lost between pages AFTER WEB SERVER MOVE shared to dedicated

我刚刚从一个共享的主机包移动到一个专用的云服务器,并上传了我的完全工作的网站,会话变量在页面之间传递到新的专用服务器,现在突然间会话变量正在丢失。有人能解释一下为什么会这样吗?

如果需要,我可以提供一些更多的代码,但我认为这应该足够了。

我也试着在一个页面上设置一个变量,然后在同一页面上显示它,这是有效的,但我不知道如果这个值甚至被保存在会话中,因为它是在同一页面上。

我知道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是你吗?