php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #26507 ob_end_flush behaviour change
Submitted: 2003-12-02 18:56 UTC Modified: 2003-12-02 22:46 UTC
From: michael at tapinternet dot com Assigned:
Status: Not a bug Package: Output Control
PHP Version: 4.3.4 OS: debian linux
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
46 - 24 = ?
Subscribe to this entry?

 
 [2003-12-02 18:56 UTC] michael at tapinternet dot com
Description:
------------
ob_end_flush used to completely trim all output that had been collected, including whitespace at the end of previously included files.  That's not happening after an upgrade to PHP 4.3.4 (from 4.3.1).  

EXAMPLE:
test.php
<?
$foo='';
?>
     <--- note whitespace here



bar.php
<?
include('test.php');
ob_end_flush();
header("Content-type: application/ms-word");
echo "foobar";
?>

'foobar' will have a linebreak *before* it, even though the ob_end_flush() function has been called.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-12-02 22:27 UTC] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

PHP does not trim output.
 [2003-12-02 22:46 UTC] michael at tapinternet dot com
I worded this wrong, I'm sorry,

Dang - I made the whole thing wrong.

It's not the 'flush' one it's ob_end_clean().


EXAMPLE:
test.php
<?
$foo='';
?>
     <--- note whitespace here

bar.php
<?
include('test.php');
ob_end_clean();
header("Content-type: application/ms-word");
echo "foobar";
?>

-----------------
'foobar' will have a linebreak *before* it, even though the
ob_end_flush() function has been called.
-----------------

Please reconsider the above issue.  ob_end_clean() (this is what's in the code which was causing us problems after the upgrade) has changed behaviour.  

I've not made myself clear on this, and that's my fault.  EVERYTHING has ob_start() at the top of the controller file, so the example files *only* have the ob_end_clean() in them when needed.  This *should* be clearing out everything that's been collected in the output buffer up to that point.  Previous versions apparently dealt with the whitespace in any include()d files as well, but this latest version (4.3.4) is breaking where earlier versions (4.3.1 and below) worked.

If this behaviour has changed here, what else may have changed as well?
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 14:01:29 2024 UTC