PHP序列化将无法正常工作

PHP序列化将无法正常工作,php,oop,serialization,Php,Oop,Serialization,我正在使用PHP版本5.3.3-1ubuntu9.1在本地机器上开发和执行所有测试。主机是PHP版本5.2.15 所有序列化参数都是相同的 问题在于,当我尝试在测试本地计算机上登录用户时,我会执行以下操作: $user->getByUserId($results['id'], $db); $_SESSION['user'] = serialize($user); 它检索并序列化用户,我只要在检测到会话存在时将其加载回来: $user->LoadFromObject(unseria

我正在使用PHP版本5.3.3-1ubuntu9.1在本地机器上开发和执行所有测试。主机是PHP版本5.2.15

所有序列化参数都是相同的

问题在于,当我尝试在测试本地计算机上登录用户时,我会执行以下操作:

$user->getByUserId($results['id'], $db); 
$_SESSION['user'] = serialize($user);
它检索并序列化用户,我只要在检测到会话存在时将其加载回来:

$user->LoadFromObject(unserialize($_SESSION['user']));
这在我的测试机上运行得很好。刚刚在主机上传输了文件,以查看是否可以获得测试版,但我一直在获得:

警告:unserialize()需要 参数1为字符串,对象给定 在/home/gamerent/public_html/beta/includes/header.php中 第19行

我注意到,如果我在两个系统中都回显
$\u会话['user']
,测试确实会显示序列化的会话,但主会话只会显示对象,而不会序列化
$user

更新:

好的,经过一些测试。。。。。 我已经看到,如果在将用户初始化为之前转储会话

var_dump($_SESSION['user']);
$user = new User();
var_dump($_SESSION['user']);
它将显示正确序列化的会话。 在此之后,它将显示会话的字符串

我的用户不使用默认值执行任何excpet init操作

function User() {
        $this->userId = 0;
        $this->firstname = "Guest";
        $this->password = "";
        include_once('includes/generalUtils.php');
        $this->generalUtils = new generalUtils();
        include_once('includes/utils.php');
        $this->utils = new utils();
    }

您需要在生产机器上禁用register_globals。否则,您将通过分配给$\u session['user']来注册会话变量。选中。

So序列化($user);是否在主机上返回$user?旁注:它是PHP5.x。使用_构造作为构造函数的标识符。使用类名来表示不推荐使用。而且真的。。。查看类自动加载-在构造函数中包含这些内容是很难看的。@Mchi将为__________________________________。也。。。。我在哪里可以得到那些自动加载?我在找类似的东西,但没找到。你能检查一下这两台机器上的register\u globals是否都关闭了吗?我认为,如果您打开了它,那么您将通过分配给$\u session来注册会话变量。