首先我不是哪个是正确的stackExchange网站发布此问题,如果问题是其他堆栈网站请删除我的问题.
现在让我们来谈谈这个问题:这种情况是我有一个位于/home/user/public_html/folder-one/folder-two/folder-three/file.php
的文件:文件必须创建/folder-one
包含所有文件和子文件夹的文件夹的存档/folder-one
.我使用系统函数(exec(),shell_exec()或system())创建存档,它完美无缺.我的代码是:
<?php
$output = 'zip -rq my-zip.zip /home/user/public_html/folder-one -x missthis/\*';
shell_exec($output);
?>
Run Code Online (Sandbox Code Playgroud)
但是当我下载并打开存档时,存档包含子文件夹/home
; /user
; /public_html
但这个文件夹是完全不需要的,我想知道如何在没有它们的情况下创建zip.
当我尝试这样的东西$output = 'zip -rq my-zip.zip ../../../folder-one -x missthis/\*';
但是当我打开存档(在基于Windows 7的操作系统上)时,文件夹的名称是../folder-one
后记:如果有人 在Windows托管计划上给我正确的制作拉链,那会更好$output
.
最好的问候,乔治!
小智 11
默认情况下,zip将存储相对于当前目录的完整路径.所以你必须在跑步前cd
进入:public_html
zip
$output = 'cd /home/user/public_html; zip -rq my-zip.zip folder-one -x missthis/\*';
shell_exec($output);
Run Code Online (Sandbox Code Playgroud)
有一种更好的方法,无需执行cd
. 如前所述这里有忽略完整路径的选项。这是-j
或--junk-paths
。所以你可以这样做:
<?php
$output = 'zip -jrq my-zip.zip /home/user/public_html/folder-one -x missthis/\*';
shell_exec($output);
?>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13312 次 |
最近记录: |