【问题标题】:PHP Session code work differently on two serversPHP Session 代码在两台服务器上的工作方式不同
【发布时间】:2011-02-09 10:39:48
【问题描述】:

我有一些代码在一台服务器上运行良好,但给出了会话标头警告:

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送

另一个。

我检查了两台服务器上的 php.ini 设置,它们是相同的。

我知道警告消息应该表明在 session_start 之前已经输出了一些东西,但我不明白为什么相同的代码在一个服务器上工作而在另一个服务器上工作。

除了 php.ini 设置之外,还有什么可以解释的吗?

【问题讨论】:

  • 总是带来 exact 错误信息。里面有重要信息
  • 最好避免比较 php.ini 文件。相反,比较php_info()
  • Mike - 我比较的是 php_info 的输出,但鉴于这只是 php.ini 的一个更易读的版本,我不确定它有什么优势。

标签: php session


【解决方案1】:

可能在将文件传输到第二台服务器时,您在其中一个文件的末尾引入了空白行?

【讨论】:

    【解决方案2】:

    我已经检查了 php.ini 设置 两台服务器,它们是 一样的。

    我认为你错了,其中一个开启了缓冲。

    【讨论】:

    • 好的,让我澄清一下。我检查了 php.ini 中的“会话”设置,它们是相同的。你是对的,如果我将缓冲设置为 On,问题就会消失。这样做的更广泛的后果是什么?谢谢
    • @william 唯一的后果是您编写了意大利面条式代码,非结构化且混乱。在正确规划的代码中,在 HTML 输出开始后发送 HTTP 标头是不可能的。
    【解决方案3】:

    您是否也检查了 Web 服务器的配置? php 指令可以在 Apache 的 httpd.conf 和 .htaccess 文件中设置,即使主要的 php.ini 文件是相同的,您最终也会有所不同。

    您应该做的是比较两台服务器上phpinfo() 的输出。如果服务器配置有任何差异,就会显示出来。

    【讨论】:

      【解决方案4】:

      可能在传输过程中或其他任何文件的开头出现了一些不可见的字符

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 2015-12-23
        • 1970-01-01
        • 2017-11-14
        • 1970-01-01
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多