无法在 php 中提取 zip 文件,无反馈或错误

Cannot extract zip file in php, no feedbackor error

我正在以这样的 kmz 格式检索我的 google 地图:

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,但仍然无法正常工作。我已经在 Winrar 中打开 map.kmz 文件,它确实说它是一个 zip 文件格式。

知道为什么它不起作用吗?我是否需要一些特殊权限才能读取文件数量或提取文件?

检查您的文件类型 .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');

厌倦了该死的 class 不起作用,尝试了这个方法,它起作用了:

$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();