2012-07-03 24 views
6

En primer lugar, no sé cuál es el sitio correcto de stackExchange para publicar esta pregunta si la pregunta es sobre otro sitio de pila, elimine mi pregunta.Cómo comprimir una carpeta sin la ruta completa

Ahora vamos a hablar de la cuestión: Esta situación es que tengo un archivo que se encuentra en: /home/user/public_html/folder-one/folder-two/folder-three/file.php y el archivo debe crear archivo de carpeta /folder-one con todos los archivos y subcarpetas de /folder-one. Creo el archivo con la función del sistema (exec(), shell_exec() o system()) y funciona perfecto. Mi código es:

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

Pero cuando descargar y abrir el archivo el archivo incluye las subcarpetas como /home; /user; /public_html pero estas carpetas son totalmente innecesarias y quiero saber cómo crear zip sin ellas.

Cuando trato con algo como esto $output = 'zip -rq my-zip.zip ../../../folder-one -x missthis/\*'; pero luego cuando abra el archivo (en Windows 7 sistema operativo basado en) el nombre de la carpeta y uno es ../folder-one

PostScript: Será mejor si alguien me da correcta$outputlas cremalleras de fabricación en planes de alojamiento basados ​​en Windows.

Recuerdos, George!

Respuesta

10

De forma predeterminada, zip almacenará la ruta completa relativa al directorio actual. Así que hay que cd en public_html antes de ejecutar zip:

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

¡Su trabajo perfecto, gracias! –

2

Hay una mejor manera, sin hacer un cd. Como se indica here, hay una opción para ignorar las rutas completas. Esto es -j o --junk-paths. Entonces usted podría hacer:

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

-j dejará '/ folder_one' fuera, y parece que OP necesita tener ese directorio y su contenido en el archivo zip, no solo el contenido de la carpeta – sixty4bit

Cuestiones relacionadas