Я бы, вероятно, предложил использовать два системных вызова:
1) разархивировать в папку tmp 2) прочитать файлы из этой папки
(обновленный полный рабочий скрипт):
<?php
if (isset($_POST["fsubmit"])){
echo "<pre>";
var_dump($_POST);
var_dump($_FILES);
$tmp_dir = "tmp/" . microtime(true);
if (!file_exists($tmp_dir)){
mkdir($tmp_dir);
}
if (is_uploaded_file($_FILES["file"]["tmp_name"])){
move_uploaded_file($_FILES["file"]["tmp_name"], $tmp_dir . "/a.zip");
exec("unzip -z -j $tmp_dir $tmp_dir" . "/a.zip");
exec("ls $tmp_dir", $out);
echo "Files in the archive:\n";
foreach ($out as $file){
$file = trim($file);
echo "File: $file,", filesize($tmp_dir . "/" . $file)."b\n";
}
exec("rm -rf $tmp_dir");
}
} else {
?>
<form action="test.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="fsubmit" value="upload">
</form>
<?
}
Предварительные требования
0) будут работать, если вы находитесь под Unix / Linux / Mac (не работает под Windows)
1) создайте test.php и вставьте в него код выше
2) убедитесь, что в той же папке, где test.php находится папка tmp
3) убедитесь, что пользователь apache может написать эту папку (например, chmod 777 tmp)
4) убедитесь, что ваш php разрешает загрузку файлов
5) убедитесь, что на вашем сервере есть «unzip» инструмент командной строки
С уважением.