php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #16341 mysql and header() problem prevent saving session vars(?)
Submitted: 2002-03-29 04:12 UTC Modified: 2002-03-29 06:09 UTC
From: lukas at edeal dot de Assigned:
Status: Closed Package: Output Control
PHP Version: 4.1.1 OS: Linux (Debian)
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 you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: lukas at edeal dot de
New email:
PHP Version: OS:

 

 [2002-03-29 04:12 UTC] lukas at edeal dot de
this bug-report really is for latest CVS-HEAD as of 2002-03-29.

using this script with latest cvs the output appears incorrect to me, b/c "barbarbar" is not encoded.
if you remove ob_clean() everything is encoded just fine.

<?php

ob_start('ob_gzhandler');
echo "foo";
ob_clean();
echo "barbarbar";

?>

upon request this is logged to error_log:

PHP Warning:  String is not zero-terminated (~) (source:
/src/cvs/php4-head/Zend/zend_execute_API.c:274) in /public_html/test/ob/test3.php on line 5 

/public_html/test/ob/test3.php(5) : Warning - String is not zero-terminated (~) (source:
/src/cvs/php4-head/Zend/zend_execute_API.c:274)

using ob_gzhandler i quite expect a binary non zero-terminated string and this warning is not a surprise. but i am surprised about it being issued on ob_clean(); which, simplified, is just a reset doing 
text_length=0 on the active output buffers. it doesn't really have to touch and use the buffers to do that, does it?

the above script sends the following response including content-encoding: gzip, but without actually encoding
it:

X-Powered-By: PHP/4.3.0-dev
Content-Encoding: gzip
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

d4 
<br />
<b>Warning</b>:  String is not zero-terminated (~) (source:
    /src/cvs/php4-head/Zend/zend_execute_API.c:274) in
<b>/public_html/test/ob/test3.php</b> on line <b>5</b><br />
barbarbar
0


for now i'm working around this by using a logic like this, proving that ob_clean works, but not with ob_gzhandler.

<?php
ob_start();  
echo "foo";
ob_clean();
echo "barbarbar";

$b = ob_get_contents();
ob_end_clean();

ob_start('ob_gzhandler');
print $b;
?>


regards,
  -lukas
~



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-03-29 06:09 UTC] yohgaki@php.net
This bug is fixed in HEAD.
Fix is included in PHP 4.2.0.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 16:01:28 2024 UTC