Php 会话变量在本地服务器上工作,但在宿主服务器上不工作

Php 会话变量在本地服务器上工作,但在宿主服务器上不工作,php,session-variables,Php,Session Variables,我正在开发一个简单的php/mysql讨论论坛。声明 <?php print $_SESSION['username']; ?> 在我的本地计算机上生成所需的结果,但是当我上传代码以测试forum live时,会话变量的值不再显示。是什么导致了这种情况?导致这种情况的一个原因是,如果live web服务器位于使用默认php会话处理的负载平衡环境中。默认情况下,php将会话数据存储在服务器上的一个平面文件中,因此,如果用户在webheads周围跳跃,他们将丢失会话数据 在这种情

我正在开发一个简单的php/mysql讨论论坛。声明

<?php print $_SESSION['username']; ?> 


在我的本地计算机上生成所需的结果,但是当我上传代码以测试forum live时,会话变量的值不再显示。是什么导致了这种情况?

导致这种情况的一个原因是,如果live web服务器位于使用默认php会话处理的负载平衡环境中。默认情况下,php将会话数据存储在服务器上的一个平面文件中,因此,如果用户在webheads周围跳跃,他们将丢失会话数据


在这种情况下,您需要使用db定义自己的会话处理程序在代码开头?检查phpinfo()输出,确保服务器上支持会话,并且允许在保存会话数据的任何位置写入会话。我已启动会话。。。我的本地服务器上的会话变量一切正常,只是在我上传时没有。我不明白你所说的“如果用户在webheads周围跳跃,他们将丢失会话数据”是什么意思。如果我的情况就是这样,我如何使用db定义自己的会话处理程序?如果有任何区别,我会打印出我的三个会话变量:user_id(int)、username(string)和admin(int)。两个整数会话变量的值已被很好地提取…未显示的字符串是“username”。首先,您需要创建一个DB表来存储用户会话。然后,您需要创建一个类来定义所有会话处理程序函数,并获取和设置数据库中的数据。然后,当您l session_start()它将从中央数据库而不是您所在的任何服务器上的平面文件中保存和检索。只要您不知道“如果用户在webheads周围跳跃,他们将丢失会话数据”。在负载平衡环境中,web连接不是由单个web服务器处理的。负载由多个服务器共享。如果会话在webserver1上启动,并且会话存储在/tmp/sessionid中,则用户会更改一个页面并发送到webserver2。第二个web服务器不知道第一个页面,因此无法访问先前创建的会话。您还需要将session.save_处理程序的php配置项从文件更改为用户。