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