首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP错误:消息:无法修改标头信息-标头已由发送(输出开始于

PHP错误:消息:无法修改标头信息-标头已由发送(输出开始于
EN

Stack Overflow用户
提问于 2019-06-15 01:12:07
回答 1查看 461关注 0票数 0

我们的虚拟主机公司已经将服务器从php 5.5升级到5.6。然后我得到这个PHP错误:消息:无法修改标题信息-标题已发送(输出开始于/home/xxxxx/public_html/orders/xxxxxx/system/core/Exceptions.php:185)文件名:核心/Common.php行号: 438 404页面未找到您请求的页面未找到。

Exceptions.php

代码语言:javascript
运行
复制
        // For safety reasons we do not show the full file path
        if (FALSE !== strpos($filepath, '/'))
        {
            $x = explode('/', $filepath);
            $filepath = $x[count($x)-2].'/'.end($x);
        }

        if (ob_get_level() > $this->ob_level + 1)
        {
            ob_end_flush();
        }
        ob_start();
        include(APPPATH.'errors/error_php.php');
        $buffer = ob_get_contents();
        ob_end_clean();
        echo $buffer;
    }


}
// END Exceptions Class

Common.php

代码语言:javascript
运行
复制
    function set_status_header($code = 200, $text = '')
    {
        $stati = array(
                            200 => 'OK',
                            201 => 'Created',
                            202 => 'Accepted',
                            203 => 'Non-Authoritative Information',
                            204 => 'No Content',
                            205 => 'Reset Content',
                            206 => 'Partial Content',

                            300 => 'Multiple Choices',
                            301 => 'Moved Permanently',
                            302 => 'Found',
                            304 => 'Not Modified',
                            305 => 'Use Proxy',
                            307 => 'Temporary Redirect',

                            400 => 'Bad Request',
                            401 => 'Unauthorized',
                            403 => 'Forbidden',
                            404 => 'Not Found',
                            405 => 'Method Not Allowed',
                            406 => 'Not Acceptable',
                            407 => 'Proxy Authentication Required',
                            408 => 'Request Timeout',
                            409 => 'Conflict',
                            410 => 'Gone',
                            411 => 'Length Required',
                            412 => 'Precondition Failed',
                            413 => 'Request Entity Too Large',
                            414 => 'Request-URI Too Long',
                            415 => 'Unsupported Media Type',
                            416 => 'Requested Range Not Satisfiable',
                            417 => 'Expectation Failed',

                            500 => 'Internal Server Error',
                            501 => 'Not Implemented',
                            502 => 'Bad Gateway',
                            503 => 'Service Unavailable',
                            504 => 'Gateway Timeout',
                            505 => 'HTTP Version Not Supported'
                        );

        if ($code == '' OR ! is_numeric($code))
        {
            show_error('Status codes must be numeric', 500);
        }

        if (isset($stati[$code]) AND $text == '')
        {
            $text = $stati[$code];
        }

        if ($text == '')
        {
            show_error('No status text available.  Please check your status code number or supply your own message text.', 500);
        }

        $server_protocol = (isset($_SERVER['SERVER_PROTOCOL'])) ? $_SERVER['SERVER_PROTOCOL'] : FALSE;

        if (substr(php_sapi_name(), 0, 3) == 'cgi')
        {
            header("Status: {$code} {$text}", TRUE);
        }
        elseif ($server_protocol == 'HTTP/1.1' OR $server_protocol == 'HTTP/1.0')
        {
            header($server_protocol." {$code} {$text}", TRUE, $code);
        }
        else
        {
            header("HTTP/1.1 {$code} {$text}", TRUE, $code);
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-10-28 22:40:56

这是顺序问题:在调用header()函数之前,不应该输出任何,包括空格。

当PHP升级到更高版本时,会出现此错误。

在我的例子中,页面是一个提交表单,其中包含用于处理和保存数据的PHP代码。但是,在处理数据时,在该行之前不必要地输出了一些表单HTML代码

header('Location: ' . $_POST['referer']); exit;

因此出现了这个错误。因此,我将所有格式化HTML代码移到了包含上面的头跳转的PHP数据处理块之后,并解决了这个问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56602607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档