PHP zip deleteName удаляет слишком много - PullRequest
0 голосов
/ 29 декабря 2011

вот содержимое моего оригинального почтового индекса:

  • админ /
  • изображения /
  • включать /
  • index.php
  • install.php
  • стили /
  • шаблон /
  • загрузка /
  • Web /

Если я запускаю этот код:

$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';
    }

оставленные файлы:

  • админ /
  • изображения /
  • включить /

все остальные удалены. Есть идеи почему?

1 Ответ

3 голосов
/ 29 декабря 2011

Попробуйте закрыть ZIP-файл после deleteName (), затем снова откройте для извлечения.

<?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';
}
?>
...