2011-12-29 9 views
0

あまりを削除し、私の元のzipの内容です:PHPのzip deleteNameはここ

  • 管理/
  • 画像/
  • install.phpを/
  • のindex.php
  • が含まれます
  • スタイル/
  • テンプレート/
  • upロード/
  • ウェブ/

私はこのコードを実行する場合:

$zip = new ZipArchive; 
    if ($zip->open('update.zip') === TRUE) { 

     $zip->deleteName('include/mysql.php'); 
     $zip->deleteName('install.php'); 

     $zip->extractTo('./update/'); 

     $zip->close(); 

     unlink('./update.zip'); 

    } else { 
     echo 'Fehler'; 
    } 

を残しているファイルは、次のとおりです。

  • 管理/
  • 画像/
  • include/

他はすべて削除されています。どんな考え?

+0

何も削除しないとどうなりますか? $ zipはそれから何を抽出するのですか? –

+0

それから、evrythingを正しく抽出します。そのdeleteNameで試してみると、それはあまりにも多くを削除します... – bluewhile

+0

あなたはそれらのものの代わりに他のファイルを削除するとどうなりますか?出力は変化しますか?異なるディレクトリ間の違いはありますか?それらのすべてにファイルがありますか? –

答えて

2

deleteName()の後にZIPファイルを閉じてから、再度開いて抽出してみます。

<?php 
$zip = new ZipArchive; 
if ($zip->open('update.zip') === TRUE) { 

    $zip->deleteName('include/mysql.php'); 
    $zip->deleteName('install.php'); 
    $zip->close(); 

    $zip->open('update.zip'); 
    $zip->extractTo('./update/'); 
    $zip->close(); 

    unlink('./update.zip'); 

} else { 
    echo 'Fehler'; 
} 
?> 
+0

これは答えだと思います。その作品! +1 –

+0

それは動作します!ありがとうございました! – bluewhile

+0

これはなぜ機能しますか? – goat

関連する問題