Re: Cannot make bzip2 stream "on the fly"
| From: | Maciek Sokolewicz | Date: | Tue, 31 Jan 2012 15:37:21 +0000 |
| Subject: | Re: Cannot make bzip2 stream "on the fly" | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-316435@lists.php.net to get a copy of this message | ||
On 31-01-2012 15:34, Michael Shestero wrote:
What exactly are you trying to do? From the top section it seems like you're trying to output back via the standard output channel, meaning as the body of a response. This assumes you're working in a client/server relationship, where PHP is invoked server-side as a script, and its response is being sent back to the client (browser). But then all of a sudden, you start opening php://output which is an output stream which exists solely in the cli-mode! So, your answer is simply: 1. in the case of a browser/server type of relation: <?php header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=f.txt.bz2"); header("Content-Type: application/x-bzip2"); header("Content-Transfer-Encoding: binary"); $compressed_string = bzcompress("hi"); echo $compressed_string; 2. In the case that you're using php-cli, get rid of all the header stuff. It's useless here. - Tulheader("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=f.bzip2"); header("Content-Type: application/x-bzip2"); //header("Content-length: " . strlen($zippedfile) . "\n\n"); header("Content-Transfer-Encoding: binary"); ob_flush(); $bz = bzopen( 'php://output' , 'w' ); if ($bz===FALSE) { echo "FALSE"; return; } bzwrite($bz,"hi"); bzclose($bz); bzopen returns error: bzopen(): cannot represent a stream of type Output as a File Descriptor in case using stdout instead of output it works but produce zero result. Following works ok: $z = fopen( 'php://output' , 'w' ); if ($z===FALSE) { echo "FALSE"; return; } fwrite($z,"hihi"); fclose($z);Please, help!