我正在使用这个命令行到gzip
文件,但我不想将输出写入服务器,只是强制下载生成的gz
文件到浏览器。
$filename = '_backup_fichier.tar.gz';
exec('find '.$_SERVER['DOCUMENT_ROOT'].'/images_contenu/source/*.pdf -mtime +0 | xargs tar -czf '.$filename.'', $output, $return);
你认为可以做到吗?
感谢您的帮助。
答案 0 :(得分:3)
您正在寻找passthru
功能。
passthru()
函数类似于exec()
函数,因为它执行命令。当Unix命令的输出是需要直接传递回浏览器的二进制数据时,应该使用此函数代替exec()
或system()
。
示例:
passthru("find $_SERVER[DOCUMENT_ROOT]/images_contenu/source/*.pdf -mtime +0 | xargs tar -cz");
答案 1 :(得分:1)
查看PharData class以将文件收集到存档或使用buildFromDirectory method。
您需要将存档写入临时文件,将其传递给客户端并在之后将其删除以保持服务器清洁
别忘了设置正确的HTTP响应头。