8

我尝试在同一台服务器上使用 curl 从一个虚拟主机下载一个 zip 文件到另一个。Zip 文件包含 *.php 和 *.jpg 文件。

问题是:有时 JPG 文件会损坏,如下所示:

jpg 文件

这是我的代码:

$out = fopen(ABSPATH.'/templates/default.zip','w+'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_FILE, $out); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, 'http://share.example.com/templates/default.zip'); 
curl_exec($ch); 
curl_close($ch); 


$zip = new ZipArchive;
if ($zip->open(ABSPATH.'/templates/default.zip') === TRUE) 
{
    if($zip->extractTo(ABSPATH.'/templates'))
    {
        echo 'OK';
    }

    $zip->close();
} 

//$zip->close();

我不明白我的jpg会发生什么。我也尝试使用 pclzip.lib.php,但没有运气。如何解决这个问题呢 ?

提前致谢

4

2 回答 2

1

您是否尝试过通过 curl 下载文件并正常解压缩(即没有 php)?弄清楚是下载导致问题还是解压缩。

您也可以尝试使用 shell_exec 替换这两个部分之一(wget 代替 curl,unzip 代替 ZipArchive)。我的意思是仅用于调试,而不是用于生产。

于 2012-06-03T10:29:30.013 回答
1

最后我发现了问题所在。

我正在使用 Nginx Web 服务器,当我更改 nginx 配置文件时:

sendfile on;

变成了

sendfile off;

我的形象不再腐败。所以它不是 php 或 curl 问题。有趣的文章:http ://technosophos.com/node/172

于 2012-06-09T16:55:14.773 回答