我没有把一个文件放到一个新的zip存档中.
makeZipTest.PHP:
<?PHP $destination = __DIR__.'/makeZipTest.zip'; $fileToZip = __DIR__.'/hello.txt'; $zip = new ZipArchive(); if (true !== $zip->open($destination,ZIPARCHIVE::OVERWRITE)) { die("Problem opening zip $destination"); } if (!$zip->addFile($fileToZip)) { die("Could not add file $fileToZip"); } echo "numfiles: " . $zip->numFiles . "\n"; echo "status: " . $zip->status . "\n"; $zip->close();
zip已创建,但为空.然而,没有触发任何错误.
出了什么问题?
在某些配置中,当将文件添加到zip存档时,PHP无法正确获取本地名称,并且必须手动提供此信息.因此,使用addFile()的第二个参数可能会解决此问题.
ZipArchive::addFile
Parameters
- filename
The path to the file to add.- localname
If supplied,this is the local name inside the ZIP archive that will override the filename.
PHP documentation: ZipArchive::addFile
$zip->addFile( $fileToZip,basename($fileToZip) );