2012-06-03 10 views
8

同じ仮想サーバー上のある仮想ホストから別の仮想ホストにcurlを使用してzipファイルをダウンロードしようとしました。 Zipファイルには、* .phpファイルと* .jpgファイルが含まれています。zipから抽出したときに壊れた画像

問題がある:次のように時々JPGファイルは、破損しを得る:

jpg file

ここでは私のコードです:

$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を使ってみましたが、運はありませんでした。この問題を解決するには?事前に

おかげで

+2

ファイルを正常にダウンロードして解凍すると(つまり、PHPなしで手動で)正常に機能しているかどうかはわかりません。 –

+0

はい、その仕事。ファイルFTPバイナリモードを使用してサーバーにアップロードしました(私もasciiモードを試しました)、ありがとうございます。 –

+1

私はこの分野の専門家ではありませんが、zipファイルはさまざまなアルゴリズムを持つことができます。たぶん、互換性の問題がありますか? –

答えて

1

最後に、私は問題が何かを発見しました。

私はnginxの設定ファイルを変更するとき、私は、nginxのWebサーバーを使用しています:

sendfile on; 

はもう

sendfile off; 

私のイメージが破損していないとなりました。だからPHPやカールの問題ではありません。おもしろい記事:http://technosophos.com/node/172

1

あなたはカールを経由してファイルをダウンロードして、通常はそれを解凍しようとしたことがあり(すなわち、PHPなし)?ダウンロードによって問題が発生するか解凍されるかを調べる。

shell_exec(curlの代わりにwget、ZipArchiveではなくunzip)を使用して、両方の部分のいずれかを置き換えることもできます。私はデバッグのためだけに、生産のためではないかもしれない。

関連する問題