2013-02-28 133 views
0

我刚刚从一个共享的主机包转移到专用的云服务器,并上传了我与网页之间传递就好了会话变量到新的专用服务器,现在完全有效的网站所有突然的会话变量都将丢失。任何人都可以阐明为什么会发生这种情况?Session变量共享专用

我可以提供一些更多的代码形式,如果需要的页面,但我想这应该足够了。

而且我也尝试在网页上设置一个变量,然后在同一个页面上显示它,这工作,但我不如果值,即使保存在会话,因为它是在同一页上。

我知道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; 
+0

你检查了你的日志吗?你的session_path是可写的吗? – 2013-02-28 17:35:36

+0

必须使用不同的网页浏览器 – Vineet1982 2013-02-28 17:37:12

+0

感谢您的回复。约翰我不知道我将如何检查? Vineet,我没有但会检查。 – 2013-02-28 18:45:11

回答

0

1)赔率是你的$ _SESSION店是不可写。

2)你调用ob_start()没有相应的ob_end_flush()函数。当您移动主机和PHP版本时,您可能已经更改了php.ini文件,并且可以通过设置将其解决。

3)你不是叫ob_end_flush(在header_selector.php)是吗?

+0

感谢您的回复,听起来像您对我的第一个建议。我在page2.php的末尾调用ob_flush,不要在header_selector.php中调用flush。如何让会议商店写作?谢谢。 – 2013-02-28 18:42:41

+0

call phpinfo();并查找此配置值:session.save_path。这将告诉你你正在将会话数据写入哪个目录。确保用户* Web服务器运行为*可以在该目录中读/写。你应该在那里看到大量的小文件。 (如果目录没有设置,那么你正在使用其他的东西来存储会话数据,可能是从memcache到MySQL的任何东西,应用相同的主体。)你的错误日志中有任何东西可用吗?如果它不可写,你应该确定。 – 2013-03-01 14:37:38

+0

谢谢你的回复。我查看了phpinfo()中的信息,PHP会话正在保存在/ var/lib/php/session文件夹中,但是我的站点位于此文件夹/ var/www/vhosts/mywebsite /中。还有另一个文件夹/ var/www/vhosts/mywebsite/lib/php /没有'会话'文件夹。我应该写信给那个地方吗? 我应该提到,该网站目前位于专用云服务器atm上的a/sitepreview /文件夹中。 – 2013-03-04 10:49:14