无法在 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();
我正在以这样的 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();