Php 从zip提取时损坏图像
我试图在同一台服务器上使用curl从一个虚拟主机下载一个zip文件到另一个虚拟主机。Zip文件包含*.php和*.jpg文件 问题是:有时JPG文件会损坏,如下所示: 这是我的密码:Php 从zip提取时损坏图像,php,nginx,Php,Nginx,我试图在同一台服务器上使用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_s
$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,但没有成功。如何解决这个问题
提前感谢您是否尝试过通过curl下载文件并正常解压缩(即不使用php)?以确定下载是导致问题还是解压
您还可以尝试使用shell_exec替换这两个部分中的一个(wget代替curl,unzip代替ZipArchive)。我的意思是只是为了调试,而不是为了生产。最后我发现了问题所在 我正在使用Nginx web服务器,当我更改Nginx配置文件时:
sendfile on;
变成
sendfile off;
我的形象不再腐败。所以这不是php或curl的问题。有趣的文章:试图排除显而易见的问题-如果你正常下载并解压文件(即手动,不使用PHP),它能工作吗?我不是这方面的专家,但我知道zip文件可以有不同的算法。可能存在兼容性问题?从您的代码判断,您似乎没有做错任何事情;你看了吗?嗯,不确定bug报告,但我想说的是,没有太多的代码共享来说明它是好的。您应该提供整个示例以及到zip文件的链接,以便能够重现您的问题。您可以控制其他服务器吗?也许你可以用gz代替zip,看看是否会发生同样的问题。这至少可以排除解压错误。