Session PHP会话变量在重定向后为空

Session PHP会话变量在重定向后为空,session,redirect,shared-hosting,Session,Redirect,Shared Hosting,我已经在我的本地机器上写了一个应用程序,在我把这个应用程序上传到一个免费的托管服务器之前,一切都很完美。问题是在这段代码中设置的所有会话变量: if($user) { // regenerate session for safety purposes //session_regenerate_id(true); //set some session vars and redirect $_SESSION['user_id']

我已经在我的本地机器上写了一个应用程序,在我把这个应用程序上传到一个免费的托管服务器之前,一切都很完美。问题是在这段代码中设置的所有会话变量:

   if($user) {
        // regenerate session for safety purposes
        //session_regenerate_id(true);
        //set some session vars and redirect
        $_SESSION['user_id'] = $user->id;
        $_SESSION['first_name'] = $user->first_name;
        $_SESSION['admin']      = $user->admin;
        return true;
    }
当我打印这些代码时,在重定向后变为空(所有这些代码都是登录系统的一部分):

       Authentifiacation::login($user, $remember_me);
       Flash::addMessage('Successfully logged in', Flash::SUCCESS);
       // redirect user to the page which he originally requested
       static::redirect('/admin/home/index');
       exit();
我刚刚得到
print\r($\u SESSION)
Array()

但是,当我完全在设置后打印它们时,它们都存在。 我使用的是简单的MVC框架,在localhost上一切都很好。我已经试过了: 1) 在脚本的不同部分添加
session\u start()
,尽管它位于前面的controller index.php中 2)
会话\u在设置变量后重新生成\u id()
3)
exit()
after
redirect()
4) 用于将
register\u globals
设置为off的代码 5) 删除.htaccess


还有其他可能的原因吗?

在您的机器上是否关闭了
注册表全局设置?@vaso123,是的,我试图在.htaccess文件中通过
php\u flag register\u globals off
执行此操作,后来发现,在我的服务器上默认情况下是关闭的。正如我提到的,在我的本地机器上一切都很完美。这个问题只出现在life服务器上。您使用的是什么版本的PHP,本地和服务器?@EdelmarZiegler,我在本地机器上使用PHP7.0.15版本,在远程服务器上使用PHP7.1.16版本。你认为这就是问题的原因吗?@Kirill是的,我认为。我发现了你的问题,因为我遇到了同样的问题,一个曾经正常工作的脚本刚刚停止,我唯一改变的是从7.0.x升级到7.1.x。降级至7.0后,问题消失了。在我的例子中,我将脚本从分离到用户,终止连接,但在长时间执行之后(fastcgi_finish_请求)。我使用会话在脚本之间交换进度。我知道,我应该用数据库。。。我确信此函数是否是会话中断的原因,但降级问题已得到解决。