Cuando se utiliza el sistema para comprimir un directorio de un montón de salida se muestra
Pregunta
Estoy tratando de escribir un script que permite a un administrador de un sistema de carga de fotos descargar todas sus fotos a la vez. Actualmente estoy usando
system('zip -r '.$_SERVER['DOCUMENT_ROOT'].'/zip.zip '.$_SERVER['DOCUMENT_ROOT'].'/images/photo-uploads';
para comprimir los archivos, pero esto parece hacerse eco de los nombres y ubicaciones de todos los archivos en la página. ¿Hay alguna forma de evitar esto? Si no es así cuál es la mejor manera de comprimir archivos en el servidor.
Solución
Es posible utilizar exec('zip -r '.$_SERVER['DOCUMENT_ROOT'].'/zip.zip '.$_SERVER['DOCUMENT_ROOT'].'/images/photo-uploads');
lugar.
Otros consejos
Puede utilizar ZipArchive extensión en su lugar (si está permitido) del sistema de llamada zip así, porque hace que su código no portátil.
También puede utilizar el almacenamiento en búfer de salida:
ob_start();
system('zip -r '.$_SERVER['DOCUMENT_ROOT'].'/zip.zip '.$_SERVER['DOCUMENT_ROOT'].'/images/photo-uploads';
ob_end_clean();
Esto detendrá cualquier salida de ser mostrado desde el comando del sistema.