无法在php中解压缩zip文件,没有反馈错误

时间:2015-02-16 07:31:13

标签: php zip ziparchive

我正在以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文件格式。

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

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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();