Невозможно извлечь zip-файл в php, ошибка обратной связи отсутствует

0

Я извлекаю карту google в формате kmz следующим образом:

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/temp/map.kmz', file_get_contents('https://mapsengine.google.com/map/kml?mid=zLucZBnh_ipg.kS906psI1W9k') );

$zip = new ZipArchive;
$res = $zip->open($_SERVER['DOCUMENT_ROOT'].'/temp/map.kmz');
if ($res === true)
{
    trace("Number of files: $res->numFiles".PHP_EOL);
    for( $i = 0; $i < $res->numFiles; $i++ )
    { 
        $stat = $res->statIndex( $i ); 
        print_r( basename( $stat['name'] ) . PHP_EOL ); 
    }
}

Но файлы не отображаются, а $zip->extractTo() тоже не работает. Файл загружается на сервер, и я могу извлечь его вручную. Я попытался переименовать файл.zip или.kmz, все еще не работая. Я открыл файл map.kmz в Winrar, и он действительно говорит, что это формат zip файла.

Любая идея, почему он не работает? Нужны ли мне специальные разрешения для чтения количества файлов или извлечения?

Теги:
zip
ziparchive

2 ответа

0
Лучший ответ

Устал из того, что класс проклятых не работает, попробовал этот метод, и он работает:

$data = file_get_contents("https://mapsengine.google.com/map/kml?mid=zLucZBnh_ipg.kS906psI1W9k");
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/temp/kmz_temp', $data);
ob_start();
passthru("unzip -p {$_SERVER['DOCUMENT_ROOT']}/temp/kmz_temp");
$xml_data = ob_get_clean();
header("Content-type: text/xml");
echo $xml_data;
exit();
0

Проверьте типы файлов .mkz и .kmz.

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/temp/map.mkz',      
file_get_contents('https://mapsengine.google.com/map/kml?  mid=zLucZBnh_ipg.kS906psI1W9k') );

$zip = new ZipArchive;
$res = $zip->open($_SERVER['DOCUMENT_ROOT'].'/temp/map.kmz');
  • 0
    Извините, это ошибка типа, я изменил с zip на kmz в своем вопросе, но это не проблема, иначе он никогда не попадет в блок "IF"
  • 1
    Попробуйте поместить error_reporting(E_ALL); в начале вашего файла и посмотрите, что вы получите.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню