我的问题是我正在.ZIP
从服务器压缩两个以上格式的文件。在Windows上进行本地测试时,它可以正常工作,在本地甚至服务器上的Linux或Mac系统上运行时,解压缩文件时会出现错误。
做这种事情我需要考虑什么,即要压缩的文件的编码,使用命令exec
而不是ZipArchive
PHP类?
版:
我已经设法修复了错误。问题是将文件添加到 .ZIP... 我将保留对我有用的代码:
$folder = "ubicacion-archivos/";
if (extension_loaded('zip')&&$result) {
//Se crea la clase Zip
$zip = new ZipArchive();
$nombreZip = "file.zip";
//Se crea el archivo Zip
if ($zip->open($nombreZip,ZIPARCHIVE::CREATE)!==TRUE)
$error .= "Error con el zip";
while ($objetoZip = mysqli_fetch_object($result))
$zip->addFile($folder.$objetoZip->archivo,$objetoZip->archivo);
//Se agrega el archivo excel al Zip
$zip->addFile('archivos-a-agregar');
//Se cierra el archivo Zip
$zip->close();
//Si el archivo zip se creó con exito
if (file_exists($nombreZip)) {
header("Content-Type: application/zip");
header('Content-Disposition: attachment; filename="'.$nombreZip.'"');
header("Pragma: no-cache");
header("Expires: 0");
readfile($nombreZip);
//Se elimina el Zip del servidor
unlink($nombreZip);
}
}
ZipArchive 扩展必须存在,并非所有发行版都默认拥有它:
在 Linux 上使用(取决于发行版):
安装它,如果它不起作用,请查找以下软件包:
不要忘记重新启动您的 Web 服务器,无论是 Nginx 还是 Apache。
phpinfo();
使用任何页面上的函数或从命令行运行来检查此扩展是否存在php -i|grep more
。