1

好的。我知道有很多关于在页面之间导航丢失会话的帖子,但没有一个像下面这样:

我正在一个在共享主机帐户中运行良好的网站上工作。

当我将站点移动到云服务器时,我只能登录。但是当我进入时,任何页面上的任何操作都会将用户与登录页面分开,而在某个地方不再有会话变量。

对我来说一切都很好,会话路径是可写的,会话已正确解决,直到第一页,会话在 html 代码的开头和结尾都正确显示。

经过 1 天的疯狂,我发现对于页面中的每一个错误(未找到 css 文件或未找到图像),会话都会丢失。因此,我一个一个地纠正了这些错误(顺便说一句,这非常好),现在该站点又可以正常工作了。

我的问题是我可以在哪里配置这样的 linux 服务器行为,即使编程中出现一些错误,也可以保存和写入会话?

我想知道它,因为如果共享主机像那样工作,意味着某处有一个指令可以做到这一点......直到现在我找不到任何东西。

4

2 回答 2

0

错误导致会话不被保存的唯一可能性(假设您使用正常的会话保存处理程序)是 PHP 本身会在页面结束之前崩溃 - 所有其他情况(与 PHP 无关的错误,例如缺少CSS 文件或图像或非崩溃的 PHP 错误)仍应让 PHP 正常关闭,session_write_close()如果您之前没有手动执行此操作,则会自动执行此操作。

这也不太可能是与 Linux 相关的问题。

最可能的选择是旧主机和新服务器之间的 PHP 会话设置有所不同。在两者上运行phpinfo()并比较会话设置 - 看看你是否发现任何异常。

另外,我建议确保您的会话 ID cookie 被浏览器接受并且不会随着时间而改变。使用 Firebug 或 Chrome 开发者工具通过多个页面跟踪会话 ID cookie(默认称为 PHPSESSID)的值。确保它被浏览器接受并且不会一直更改。

于 2013-01-29T08:35:22.010 回答
0

如果这些错误中的任何一个导致在会话开始之前在页面上显示错误或警告,那么这是有道理的,因为任何输出都会阻止您启动会话。

于 2013-01-29T08:39:11.680 回答