Архивация в ZIP без сохранения пути

Игорь

Новичок
Архивация в ZIP без сохранения пути

Добрый день.

Архивирую в ZIP посредством Zip File Functions.

PHP:
$zip = new ZipArchive;
$res = $zip->open($prov_path."fulldump.zip", ZipArchive::CREATE);
if ($res === TRUE) {
      zip->addFile($prov_path."fulldump.sql");
      $zip->close();
} else {
      echo 'Не могу провести архивацию.';
}
Но вот беда, в архив всегда попадает абсолютный путь к файлу. А давать информацию об организации файловой системы на сторону совершенно не хочется.

Как избежать занесения абсолютного пути в ZIP файл? В настоящее время я склоняюсь к использованию exec();
 

Игорь

Новичок
Этот параметр я тоже пробовал крутить. Не помогает. Абсолютный путь всё равно остаётся. Пойду попробую тупо изменить текущий каталог.

-~{}~ 10.05.07 10:15:

Смена текущего каталога решает проблему.
PHP:
chdir($prov_path);
 

Игорь

Новичок
Удивился, стал разбираться. Вот что обнаружил.

PHP:
$res = $zip->open($prov_path."fulldump.zip", ZipArchive::CREATE);
Судя по времени создания, создаёт новый архив. Содержимое оценить не могу, т.к. тестовые данные одни и те же.

Так вот. Если я создаю архив, а уже существует архив с этим же именем, содержащий абсолютный путь -- абсолютный путь остаётся.

Сначала я создал архив. В нём оказался абсолютный путь. Потом, сколько я не играл вторым параметром, этот путь оставался в архиве.

Когда я использовал chdir, файл был предварительно удалён. Посему архив был без полного пути. Если создавать архив на место архива, содержащего абсолютный путь, то chdir тоже не помогает.

В настоящее время предварительно удаляю архив (если он есть), и создаю новый, используя второй параметр addFile.

PHP:
					if (file_exists($prov_path."fulldump.zip")) {
						unlink($prov_path."fulldump.zip");
					}
					$zip = new ZipArchive;
					$res = $zip->open($prov_path."fulldump.zip", ZipArchive::CREATE);
					if ($res === TRUE) {
					$zip->addFile($prov_path."fulldump.sql", "fulldump.sql");
			    	$zip->close();
					} else {
						echo 'Не могу провести архивацию.';
					}
 
Сверху