PHP stream_copy_to_stream生成导致流内容损坏的前导和尾随垃圾

PHP stream_copy_to_stream生成导致流内容损坏的前导和尾随垃圾,php,zend-framework,stream,Php,Zend Framework,Stream,我正在尝试将映像从一台服务器转发到另一台服务器。多亏了ZF2,这并不像应该的那么容易。下面是我已经拥有的。结果,图像被破坏了——firebug说没有响应内容。我可以echo流式播放内容,它看起来很好(大量工件等意味着图像已正确下载) 那么,如何以图像的形式返回流中的内容呢?可能是由于处理不当的流导致了一些损坏?(我不是php程序员) 编辑: 这肯定是PHP流处理问题。我将下载的内容与原始图像进行了比较,发现文件中有一些前导和尾随垃圾。下载的内容以0D 0A开头,这是carrage return。

我正在尝试将映像从一台服务器转发到另一台服务器。多亏了ZF2,这并不像应该的那么容易。下面是我已经拥有的。结果,图像被破坏了——firebug说没有响应内容。我可以
echo
流式播放内容,它看起来很好(大量工件等意味着图像已正确下载) 那么,如何以图像的形式返回流中的内容呢?可能是由于处理不当的流导致了一些损坏?(我不是php程序员)

编辑
这肯定是PHP流处理问题。我将下载的内容与原始图像进行了比较,发现文件中有一些前导和尾随垃圾。下载的内容以
0D 0A
开头,这是carrage return。这是从哪里来的?

我已经找到了解决问题的办法。关键在于领先
0d0a
。我偶然发现了一个关于输出当前文件的主题。我所需要做的就是从我的控制器的源代码末尾删除
?>
,然后新的生产线就消失了。我不明白为什么这会影响到所有的输出。所有这些我都认为PHP。。。你知道吗。它应该从它的场景中消失。无论如何
sqrt(-1)喜欢php===so\u true)

    $response = new \Zend\Http\Response\Stream();
    $response->setStatusCode(200);
    $headers = new \Zend\Http\Headers();
    $headers->addHeaders(array(
        'Content-Type' => 'image/jpeg',
    ));
    $response->setHeaders($headers);
    $fh = @fopen('php://memory', 'wr');
    $count = stream_copy_to_stream(fopen($url, 'r'), $fh); // URL is OK if I paste it into browser - got image
    rewind($fh);
    //  echo stream_get_contents($fh); // it would look like garbage but means that image is downloaded
    $response->setStream($fh);
    return $response;