原本应该是很简单的一个事, 但是我被坑了, 因为本地的环境附件存储路径就是真实路径, 但是线上的不是的, 所以在寻找要压缩的文件夹的时候就找不到, 痛苦
不多说了, 直接上代码
一定要清楚 addFile($filePath, $relativePath) 这个方法的参数对应的都是什么
$filePath 是绝对路径, $relativePath是相对路径
比如我们要压缩 D:\data 这个文件夹下面的所有文件和文件夹, 那么, 在循环这个文件夹下面的文件夹时, $relativePath 就是相对于 D:\data 的路径
如果是1.pdf, $filePath = D:\data\1.pdf, $relativePath = 1.pdf
如果是1-1.pdf, $filePath = D:\data\文件夹1\1-1.pdf, $relativePath = 文件夹1\1-1.pdf
以此类推
所以, 在获取相对路径的时候一定要打印一下看看清楚,
$filePath = $file->getRealPath()
这个获取的是真实的路径, 可能服务器上面会隐藏路径, 我就是在这里被坑住的
如果提示 ZipArchive 这个类不存在, 加个 \ 就行了 , 这样
$zip = new \ZipArchive();
希望能帮到你