Я извлекаю карту 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 файла.
Любая идея, почему он не работает? Нужны ли мне специальные разрешения для чтения количества файлов или извлечения?
Устал из того, что класс проклятых не работает, попробовал этот метод, и он работает:
$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();
Проверьте типы файлов .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');
error_reporting(E_ALL);
в начале вашего файла и посмотрите, что вы получите.