带有zlib.inflate的PHP输出流过滤器创建空白文件

时间:2014-04-03 15:12:59

标签: php ftp fopen zlib

我试图使用' zlib.inflate'内置在我使用ftp_fget()的文件指针上的流过滤器。这个想法是,如果文件被gzip压缩,这将使它膨胀。一切正常,直到我附上流过滤器。

    $local = $remote = 'whatever.txt';
    # Create local file to transfer ftp file into
    $localFile = fopen($local, 'w');
    # Attach inflation stream filter with write filter, so we can inflate as we write to the new file
    stream_filter_append($localFile, 'zlib.inflate', STREAM_FILTER_WRITE);
    # Use fget to read remote file into local with optional inflation
    # $this->_connection(); returns csv resource
    $result    = ftp_fget($this->_connection(), $localFile, $remote, FTP_BINARY);

这似乎应该是一个非常直接的事情,但它只是给我一个空白文件。有什么想法吗?

[编辑]在Debian Lenny上运行PHP 5.2.6。 Zlib已安装并显示在phpinfo()

[编辑2]看来这与此错误有关。 https://bugs.php.net/bug.php?id=49411如果是这样,我会将其关闭。

[编辑3]用PHP 5.4.4分拆Vb实例,我仍然遇到同样的问题,所以我不认为它是一个错误。

1 个答案:

答案 0 :(得分:0)

这是我对流如何工作的误解。它们不支持命令行gzip实用程序将使用的相同头文件和预告片。 (开头为2个字节,末尾为校验和)。我将不得不从另一个角度攻击这个问题。我打算将其标记为已解决。