我尝试使用curl从同一服务器中的一个虚拟主机下载一个zip文件到另一个虚拟主机。 Zip文件包含* .php和* .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,但没有运气。如何解决这个问题?
提前致谢
答案 0 :(得分:1)
您是否尝试过通过curl下载文件并正常解压缩(即没有php)?确定下载是导致问题还是解压缩。
您也可以尝试使用shell_exec替换其中一个部分(wget而不是curl,解压缩而不是ZipArchive)。我的意思是仅用于调试,而不是用于生产。
答案 1 :(得分:1)
最后我发现了什么问题。
当我更改nginx配置文件时,我正在使用Nginx Web服务器:
sendfile on;
成了
sendfile off;
我的形象不再腐败。所以它不是php或curl问题。有趣的文章:http://technosophos.com/node/172