Doc #69404 [Opn->Csd]: PHP_OUTPUT_HANDLER_FLUSHABLE only affects ob_flush()

[email protected] Sun, 07 Jan 2024 14:03:25 +0000
Newsgroups php.doc.bugs
Message-ID <[email protected]>
Edit report at https://bugs.php.net/bug.php?id=69404&edit=1

 ID:                 69404
 Updated by:         [email protected]
 Reported by:        [email protected]
 Summary:            PHP_OUTPUT_HANDLER_FLUSHABLE only affects ob_flush()
-Status:             Open
+Status:             Closed
 Type:               Documentation Problem
 Package:            Output Control
 Operating System:   Any
 PHP Version:        5.5Git-2015-04-09 (Git)
-Assigned To:        
+Assigned To:        girgias
 Block user comment: N
 Private report:     N

 New Comment:

Closed by https://github.com/php/doc-en/pull/3073


Previous Comments:
------------------------------------------------------------------------
[2017-04-28 07:48:47] [email protected]

Related To: Bug #74399

------------------------------------------------------------------------
[2016-03-09 15:33:05] [email protected]

See also bug #71486

------------------------------------------------------------------------
[2015-06-30 23:19:34] [email protected]

Could you possibly add tests for the PHP_OUTPUT_HANDLER_* flags? It would make it much easier for me to figure out what they're meant to do.

------------------------------------------------------------------------
[2015-04-13 15:01:55] [email protected]

Actually none of these is a "flush" as in ob_flush(), where the output buffer stays on the stack.

Both ob_get_flush() and ob_end_flush() actually finish the output buffer/handler.

Naming of the userland API is ambiguous, but you can see in the output.c sources, that both of these functions actually call php_output_end() and not php_output_flush().

Reclassifying as "Doc Bug", wrt PHP_OUTPUT_HANDLER_FLUSHABLE only affects ob_flush().

Thanks anyway!

------------------------------------------------------------------------
[2015-04-09 06:44:33] [email protected]

Description:
------------
According to the manual, ob_get_flush() and ob_end_flush() should fail if PHP_OUTPUT_HANDLER_FLUSHABLE was not given during ob_start(). That seems like a sensible policy, but the flag is only checked during ob_flush().

I noticed this bug while reading output.c, I don't actually use those functions.

Test script:
---------------
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_REMOVABLE);
print "x\n";
var_dump(ob_get_flush());


Expected result:
----------------
PHP Notice:  ob_get_flush(): failed to flush buffer of default output handler (0) in ob_get_flush.php on line 4
bool(false)
x

Actual result:
--------------
x
string(2) "x
"



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=69404&edit=1