Req->Bug #30583 [Opn]: echo and print not filtered when stream filter installed on php://output..

From: Date: Fri, 20 Jan 2017 20:34:42 +0000
Subject: Req->Bug #30583 [Opn]: echo and print not filtered when stream filter installed on php://output..
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-206788@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=30583&edit=1

 ID:                 30583
 Updated by:         heiglandreas@php.net
 Reported by:        tobe at stonecodex dot com
 Summary:            echo and print not filtered when stream filter
                     installed on php://output..
 Status:             Open
-Type:               Feature/Change Request
+Type:               Bug
-Package:            Feature/Change Request
+Package:            *General Issues
 Operating System:   *
-PHP Version:        5CVS-2005-03-07
+PHP Version:        7.1
 Block user comment: N
 Private report:     N

 New Comment:

This still seems to be an issue…


Previous Comments:
------------------------------------------------------------------------
[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)

« previous php.bugs (#206788) next »