|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #28489 Destructor sending headers?
Submitted: 2004-05-22 16:24 UTC Modified: 2004-05-22 17:39 UTC
From: bonebreaker at free dot fr Assigned:
Status: Not a bug Package: Class/Object related
PHP Version: 5.0.0RC2 OS: Windows XP
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: bonebreaker at free dot fr
New email:
PHP Version: OS:


 [2004-05-22 16:24 UTC] bonebreaker at free dot fr
__destruct() appears to be automatically sending headers before it's ran.

Output buffering can't prevent this behaviour.

Tested on Windows XP, Apache 2.0.48

Reproduce code:
class Test {
    function __construct()
        $this->_string = '__construct()<br />';

    function __destruct()
        if (headers_sent($file, $line)) {
            $this->_string .= 'Headers sent in ' . $file . ' on line ' . $line;
        } else {
            $this->_string .= '__destruct()';
        print $this->_string;

$test = new Test();

Expected result:

Actual result:
Headers sent in on line 0

Though headers_sent() returns true, $file and $line still have default values.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2004-05-22 17:39 UTC]
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at and the instructions on how to report
a bug at

Headers are sent before dtors are run, that\'s expected (and normal) behavior.
PHP Copyright © 2001-2023 The PHP Group
All rights reserved.
Last updated: Sun Apr 02 09:03:46 2023 UTC