如何压缩文件夹没有完整的path

首先我不是哪个是正确的stackExchange网站发布这个问题,如果问题是其他堆栈网站,请删除我的问题。

现在让我们来谈谈这个问题:这种情况是我有一个文件位于: /home/user/public_html/folder-one/folder-two/folder-three/file.php文件必须创build文件夹/folder-one包含/folder-one所有文件和子文件/folder-one 。 我使用系统函数(exec(),shell_exec()或system())创build存档,并且它工作得很完美。 我的代码是:

 <?php $output = 'zip -rq my-zip.zip /home/user/public_html/folder-one -x missthis/\*'; shell_exec($output); ?> 

但是,当我下载并打开存档时,存档包括子文件夹/home ; /user ; /public_html但这个文件夹是完全不需要的,我想知道如何创buildzip没有他们。

当我尝试这样的事情$output = 'zip -rq my-zip.zip ../../../folder-one -x missthis/\*'; 但是当我打开文件夹(基于Windows 7的操作系统)时,文件夹的名称是../folder-one

后记:如果有人给我正确的 $output 基于Windows的托pipe计划制作拉链 将会更好

最好的问候,乔治!

Solutions Collecting From Web of "如何压缩文件夹没有完整的path"

默认情况下,zip将存储相对于当前目录的完整路径。 所以你必须在运行zip之前先进入public_html

 $output = 'cd /home/user/public_html; zip -rq my-zip.zip folder-one -x missthis/\*'; shell_exec($output); 

有一个更好的办法,没有做一个cd 。 如此处所述,可以选择忽略完整路径。 这是-j--junk-paths 。 所以你可以这样做:

 <?php $output = 'zip -jrq my-zip.zip /home/user/public_html/folder-one -x missthis/\*'; shell_exec($output); ?>