【问题标题】:Headers sent on one server, but not on the other标头在一台服务器上发送,但不在另一台服务器上
【发布时间】:2014-03-09 17:49:42
【问题描述】:

我有两台服务器。我在其中开发代码的一台开发服务器和一台实时服务器。

实时服务器
阿帕奇 2.2.23
DirectAdmin 1.43.3
进出口 4.80.1
MySQL 5.1.66
命名为 9.7.3
ProFTPd 1.3.4d
sshd
鸽舍 2.1.10
php 5.2.17
SSL 证书

开发服务器
阿帕奇 2.2.26
DirectAdmin 1.44.3
进出口 4.82
MySQL 5.6.15
命名为 9.8.2rc1
ProFTPd 1.3.4d
sshd
鸽舍 2.2.10
PHP 5.2.17

我知道我的版本不是最新的,但现在我没有机会更新它。

除了站点根目录和数据库设置(密码、用户名等)外,我的网站代码在两台服务器上完全相同。我的实时服务器有 SSL 证书。

由于某种原因,在我的实时服务器上,当我想重定向时,我收到“无法修改标头信息 - 标头已发送”错误。我的开发服务器上根本没有出现这个问题。

这怎么会发生?可能会有一些空白,但为什么这只发生在一台服务器上?

【问题讨论】:

    标签: php


    【解决方案1】:

    不要忽略错误,@amenadiel - 你是一个非常糟糕的程序员。

    坚持IPO原则:

    • 输入
    • 处理中
    • 输出

    http://en.wikipedia.org/wiki/IPO_Model

    您的问题是,您在输出之后处理一些数据。

    【讨论】:

    • 你是对的。我在输出之前写了我的处理器,当然它工作得很好。只是碰巧发现它只发生在一台服务器上很奇怪。
    • 我不会忽略它们@Adrian Preuß,我只是建议不要在屏幕上打印它们。开发人员必须检查日志文件,但允许公众在屏幕上看到原始错误是一个重大安全漏洞。
    【解决方案2】:

    将 php display_errors 设置为 Off 以避免该消息。

    然后,检查您的 php 错误日志以查看导致这些标头提前发送的任何通知或警告。似乎您的错误级别在生产中的容忍度较低,因此您正在触发您在开发中看不到的通知或警告。

    无论如何,您不应该在生产中显示错误,因此最好避免出现错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2020-05-27
      • 2010-12-30
      • 2013-08-24
      • 1970-01-01
      • 2023-03-14
      • 2012-06-30
      相关资源
      最近更新 更多