note 118461 added to wrappers.compression

From: Date: Thu, 10 Dec 2015 13:13:42 +0000
Subject: note 118461 added to wrappers.compression
Groups: php.notes 
Request: Send a blank email to php-notes+get-204320@lists.php.net to get a copy of this message
Prior to PHP 5.6 i used code like <?php file_get_contents("compress.zlib://php://input"); ?> to read gz-compressed or plain input file. Not it doesn't work. Simple workaround : <?php //file_get_contents("compress.zlib://php://input"); class gzip_header_filter8 extends php_user_filter { private $filtered = 0; public function filter($in, $out, &$consumed, $closing) { while ($bucket = stream_bucket_make_writeable($in)) { if($this->filtered == 0) { $header_len = 8; $header = substr($bucket->data, 0, 8); $flags = ord($header[1]); if($flags & 0x08) { // a filename is present $header_len = strpos($bucket->data, "\0", 8) + 1; } $bucket->data = substr($bucket->data, $header_len); $this->filtered = $header_len; } $consumed += $bucket->datalen; stream_bucket_append($out, $bucket); } return PSFS_PASS_ON; } } stream_filter_register('gzip_header_filter8', 'gzip_header_filter8'); $READ_LEN = 64*1024; $MAX_BUF_LEN = $READ_LEN*1024; $mode_plain=true; $src=fopen("php://input","rb"); //test if OK!!!! $magic_number=fread($src,2); $input=""; if(strlen($magic_number)==2) if( (ord($magic_number[0])==31) && (ord($magic_number[1])==139) ) { $mode_plain=false; stream_filter_append($src, "gzip_header_filter8", STREAM_FILTER_READ); stream_filter_append($src, "zlib.inflate", STREAM_FILTER_READ); } else { $input=$magic_number; } /* read starts here*/ $k = 0; while (!feof($src) && $k <= $MAX_BUF_LEN) { $inp = fread($src,$READ_LEN); $k += strlen($inp); $input.=$inp; } echo $input; fclose($src); ?> ---- Server IP: 72.52.91.14 Probable Submitter: 91.220.57.129 ---- Manual Page -- http://php.net/manual/en/wrappers.compression.php Edit -- https://master.php.net/note/edit/118461 Del: integrated -- https://master.php.net/note/delete/118461/integrated Del: useless -- https://master.php.net/note/delete/118461/useless Del: bad code -- https://master.php.net/note/delete/118461/bad+code Del: spam -- https://master.php.net/note/delete/118461/spam Del: non-english -- https://master.php.net/note/delete/118461/non-english Del: in docs -- https://master.php.net/note/delete/118461/in+docs Del: other reasons-- https://master.php.net/note/delete/118461 Reject -- https://master.php.net/note/reject/118461 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#204320) next »