会话数据本地工作,但不在远程服务器上
问题描述:
这是我的代码。干净利落。会话数据本地工作,但不在远程服务器上
1)first.html
<body>
<?php
session_start();
...
$somearray = $Object->method($somevar);
$_SESSION["somearray"] = $somearray;
...
?>
</body>
1)second.html
在localhost完美的工作代码。
有两个事实可以帮助你们想出问题在哪里。
1)如果您检查页面second.html离线的来源,网上你可以看到分别和some_render_function('all the stuff from the json')
some_render_function(NULL)
2)如果我检查我的共享服务器文件夹,我可以看到一个名为php_session
目录显然所有正确的文件(所有会话打开时,我测试我的项目,其中正确的数据)
任何提示?
答
你好session_start
(http://php.net/manual/en/function.session-start.php)应该永远是你的页面上的第一个参数...
例
首页
<?php session_start();?>
<html>
<head>
<title>First</title>
</head>
<body>
<?php
$somearray = $Object->method($somevar);
$_SESSION["somearray"] = $somearray;
?>
</body>
</html>
第二页
<?php session_start(); ?>
<html>
<head>
<title>Second</title>
</head>
<body>
<?php
var_dump($_SESSION["somearray"]);
?>
</body>
</html>
答
Session_start应该在任何输出之前。所以,将<?php
移动到文件的开头。否则,行为取决于服务器配置。
检查,如果你已经在服务器上启用了输出缓冲,如果没有启用le it。 - http://www.php.net/manual/en/outcontrol.configuration.php ---另外,启用将服务器上的错误记录到最高级别,然后跟踪错误日志。您可能会看到警告,可能是这些在这里详细讨论的:[已经由PHP发送的头文件](http://stackoverflow.com/q/8028957/367456)。 – hakre 2012-04-20 08:14:46
@hakre谢谢,我仍然需要联系我的服务器托管服务,但我相信问题是输出缓冲确实是因为我试图停用它在我的本地主机和功能不工作...我假设我会得到问题解决了这个修复,但我会等着看我的眼睛:) – Francesco 2012-04-21 15:15:29
@hakre事实证明,我不得不放置甚至在doctype HTML声明之前,现在它工作了 – Francesco 2012-04-21 15:24:06