Странное сообщение об ошибке с Phar

С помощью phar создавать tar.gz архив возвращает странную ошибку, следующее сообщение об ошибке:

исключение «BadMethodCallException» с сообщением «Невозможно добавить заново
преобразованный фар
«c: /www/dimg/uploads/7e6d3a5e39e43d1351e7069517f11250.tar.gz» в
список phar, phar с таким именем уже существует
c: \ www \ dimg \ upload.php: 163 Трассировка стека:

0 c: \ www \ dimg \ upload.php (163): PharData-> compress (4096)

1 {главная}

Фрагмент для создания Phar архивов использую:

$dir_id        = md5(microtime() . $_SERVER['REMOTE_ADDR']);
$upload_dir    = 'uploads/' . $dir_id;
mkdir($upload_dir, 777);

try {
$a = new PharData($upload_dir . '.tar.gz');
$a->buildFromDirectory($upload_dir);
$a->compress(Phar::GZ);
} catch (Exception $e) {
$error = true;
$err_msg .= '<li>Exception : ' . $e . '</li>';
}

Я пытался очистить каталог загрузок, но каждый раз выдается одна и та же ошибка.

3

Решение

Вместо того, чтобы использовать

$a = new PharData($upload_dir . '.tar.gz');

Использование:

$a = new PharData($upload_dir . '.tar');

На самом деле сжатие генерирует два .tar, а затем tar.gz. Поскольку вы указали .tar.gz в качестве начального вывода, он не может перезаписать его с тем же типом файла.

4

Другие решения

Я считаю, что проблема в том, что вы пытаетесь создать каталог, который tar.gz отправляется в. Другими словами, вы говорите, чтобы он собирался в конкретный каталог, а затем говорите, чтобы он строил этот каталог.

Все, что вам нужно сделать, это построить tar.gz в другом каталоге, чем тот, который вы пытаетесь сжать.

1

По вопросам рекламы [email protected]