Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WEB服务器将“共享”移动到“专用”后,页面之间的会话变量丢失_Php_Session - Fatal编程技术网

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

Php WEB服务器将“共享”移动到“专用”后,页面之间的会话变量丢失,php,session,Php,Session,我刚刚从一个共享主机包转移到一个专用的云服务器上,并将我的完全工作的网站上传到新的专用服务器上,在页面之间传递会话变量,现在会话变量突然丢失了。有人能解释一下为什么会发生这种情况吗 如果需要,我可以从页面中提供更多的代码,但我认为这应该足够了 我也尝试过在一个页面上设置一个变量,然后在同一个页面上显示它,但我不知道这个值是否像在同一个页面上一样保存在会话中 我知道PHP的版本已经从5.2.17(共享)更改为5.3.3(专用),但我已经在本地机器上用这些不同的PHP版本进行了测试,会话变量没有任何

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

如果需要,我可以从页面中提供更多的代码,但我认为这应该足够了

我也尝试过在一个页面上设置一个变量,然后在同一个页面上显示它,但我不知道这个值是否像在同一个页面上一样保存在会话中

我知道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";
<?php

ob_start();

session_start(); 

include_once "header_selector.php";

$duper = $_SESSION['duper'];
echo "Model: " . $duper;
1)您的$\u会话存储可能不可写

2) 您正在调用ob\u start(),但没有相应的ob\u end\u flush()。当您移动主机和php版本时,您可能已经更改了php.ini文件,这可能会使设置出错


3) 您没有在header\u selector.php中调用ob\u end\u flush(),是吗?

您检查过日志了吗?您的会话路径可写吗?必须尝试使用不同的web浏览器谢谢您的回复。约翰,我不知道该怎么检查?维尼特,我还没有,但会检查一下。谢谢你的回复,听起来像是你给我的第一个建议。我会在page2.php的末尾调用ob_flush,而不会在header_selector.php中调用flush。我如何允许会话存储写入?谢谢。打电话给phpinfo();并查找此配置值:session.save_path。这将告诉您正在将会话数据写入哪个目录。确保运行web服务器的用户可以在该目录中进行读/写操作。你应该会在那里看到很多小文件。(如果未设置目录,则您正在使用其他内容来存储会话数据。可以是从memcache到MySQL的任何内容。使用的错误日志中是否有任何内容?如果不能写的话,你真的应该写。谢谢你的回复。我已经查看了phpinfo()中的信息,PHP会话保存在这个文件夹/var/lib/PHP/session中,但是我的站点位于这个文件夹/var/www/vhosts/mywebsite/。其中还有另一个文件夹/var/www/vhosts/mywebsite/lib/php/,没有“会话”文件夹。我应该写信到那个地方吗?我应该提到,该站点当前位于专用云服务器atm上的/sitepreview/文件夹中。该位置由您的php.ini文件中的session.*配置值控制。(您还可以覆盖代码中的一些内容。)位置必须:可由web服务器的用户ID而不是网站的目录结构写入(否则,人们可以键入URL,直接提取$会话数据。)超过此值-将其放在何处无关紧要。它通常放在/tmp中,它有定期清理的额外好处。谢谢Andrew,我可以问一下吗。如何确保网站目录结构不能写入会话位置?我有一台新的专用(1和1)服务器,我担心这样的事情不会受到保护?非常感谢你的帮助。