Bug #30583 [Opn->Csd]: echo and print not filtered when stream filter installed on php://output..
Edit report at https://bugs.php.net/bug.php?id=30583&edit=1
ID: 30583
Updated by: kalle@php.net
Reported by: tobe at stonecodex dot com
Summary: echo and print not filtered when stream filter
installed on php://output..
-Status: Open
+Status: Closed
Type: Bug
Package: *General Issues
Operating System: *
PHP Version: 7.1
-Assigned To:
+Assigned To: kalle
Block user comment: N
Private report: N
New Comment:
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
Both echo and print are implemented in ZE and the user streams are apart
of the standard library.
I'm gonna close this as it does not seem to be a bug but rather a design choice.
You are of course welcome to request a feature request if you need this behavior changed, though I
forsee as unlikely. Sorry it took almost 16 years to get here, but I promise it won't take
another 16 years for the next reply!
Previous Comments:
------------------------------------------------------------------------
[2017-01-20 20:34:41] heiglandreas@php.net
This still seems to be an issueâ¦
------------------------------------------------------------------------
[2004-10-27 16:39:32] tobe at stonecodex dot com
Description:
------------
print and echo are not filtered when a stream filter is installed on php://output.
Whilst there are workarounds they are either not as flexible (using output_handler) or not as
convenient (changing all my echos to fwrites) as the filter pattern.
Would argue that if this behaviour is by design then the design should be changed or at the very
least the documentation amended to reflect this situation.
Reproduce code:
---------------
class strtoupper_filter extends php_user_filter
{
function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strtoupper($bucket->data);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
stream_filter_register("strtoupper", "strtoupper_filter");
$fp = fopen("php://output", "w");
stream_filter_append($fp, "strtoupper");
echo "echo: testing 123<br>";
print("print: testing 123<br>");
fwrite($fp, "fwrite: testing 123<br>");
Expected result:
----------------
ECHO: TESTING 123
PRINT: TESTING 123
FWRITE: TESTING 123
Actual result:
--------------
echo: testing 123
print: testing 123
FWRITE: TESTING 123
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=30583&edit=1
Thread (3 messages)