【问题标题】:PHP session does not work in sub directory & kills existing sessionPHP会话在子目录中不起作用并杀死现有会话
【发布时间】:2015-11-06 01:10:20
【问题描述】:

我有 3 个 PHP 环境。

  1. 本地
  2. 分期
  3. 直播

问题是,当我在session_start() 之后调用子目录中的会话时,会出现 标头已发送 并终止现有会话的错误。如果我不启动会话,那么它会为 Undefined variable _SESSION 给出错误。

会话仅在 ROOT 目录中工作。但不适用于子目录

这只发生在实时环境上。相同的代码适用于 LocalStaging,但不适用于 Live

我不知道,但这可能是 PHP 配置问题。请指导我。

【问题讨论】:

  • 能否在子目录中添加开始会话的代码
  • 这个问题和This一样

标签: php .htaccess session php-ini


【解决方案1】:

php 的第一行应该是 session_start()。如果您将包含 session_start() 的 php 页面包含/添加到另一个页面中,它将显示错误“标头已发送”。

在页面主页的开头添加 session_start()。

【讨论】:

  • 我已经在每一页上开始了会话。此页面正在 iframe 中调用。主页面包含 session_start(),iframe 页面也包含 session_start()。但如果我再次开始会话,它会杀死现有的会话。如果我不在 iframe 页面上 start_session(),它会为未定义的 $_SESSION 变量提供错误。 at 并且它会终止现有会话。
  • IFrame 创建全新的 http 会话。您不能将主会话与 iram 会话合并。在这种情况下,您不应该使用 iframe。我会建议你使用 div。您可以使用 IFrame 在您的网站中加载外部页面。
  • 根据您的建议,我已经尝试过,但实际上这不起作用。在这种情况下会话也会被杀死。
  • 不幸的是我还没有解决这个问题。但我已将需要会话数据的密钥文件放入我的 ROOT 目录。并通过不同的路径调用依赖文件。感谢您的尝试。
【解决方案2】:

在主页的开头添加 session_start()。 请确保如果您包含其他文件,则 session_start() 未定义,否则将显示错误。

【讨论】:

  • 错误也显示在我的本地和暂存环境中。但他们不会杀死我的会话。为什么我的 Live 服务器会终止现有会话?
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2011-07-08
相关资源
最近更新 更多