Я пытаюсь получить все имена файлов из файлов внутри zip-файла. Все работает отлично, пока zip-файл не содержит еще один zip-файл, и я пытаюсь также получить имена включенных файлов из включенного zip-файла.
Я хочу получить все включенные имена файлов без извлечения файла.
По какой-то причине он всегда отказывается открывать включенный zip-файл, как будто он не распознает его как zip-файл.
Чтобы быть на 100% уверенным, что это почтовый индекс для тестирования, я просто включил тот же самый почтовый индекс в основной почтовый индекс.
Хотя он правильно читает основной zip-файл, он возвращает false, если я хочу прочитать включенный файл.
Я пытался заставить этот сценарий работать в течение 3 дней, но я продолжаю терпеть неудачу, поэтому я решил посмотреть, может ли кто-то здесь помочь мне с этим.
Это скрипт, который я использую для чтения содержимого zip-файла:
function firstzipper($file) {
global $filesroot, $pagefile;
$zipinc = new ZipArchive();
if ($zipinc->open($file) === TRUE) {
for ($i = 0; $i < $zipinc->numFiles; $i++) {
$filename_full = $zipinc->getNameIndex($i);
$filename = substr($filename_full, strrpos($filename_full, '/') + 1);
if (!is_dir($filename)) {
$filename = filter_var($filename, FILTER_SANITIZE_STRING);
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if ($ext == 'zip') {
secondzipper($filesroot.$pagefile.'/'.$filename_full);
}
}
array_push($inc_files_arr,$filename);
}
return $inc_files_arr;
}
}
firstzipper ($ filesroot $ URL.);
secondzipper внутри функции выше - это просто та же функция, скопированная и переименованная.
Zip-файл выглядит так:
E: /myfolder/fileserver/temper.zip/myincluded.zip
Функция открывает файл temper.zip, но возвращает myincluded.zip, значение false.
Надеюсь, я включил всю необходимую информацию, если нет, дайте мне знать, и я добавлю, что еще требуется.