使用exec命令强制下载文件

时间:2016-01-07 12:47:12

标签: php

我正在使用这个命令行到gzip文件,但我不想将输出写入服务器,只是强制下载生成的gz文件到浏览器。

$filename = '_backup_fichier.tar.gz';    
exec('find '.$_SERVER['DOCUMENT_ROOT'].'/images_contenu/source/*.pdf -mtime +0 | xargs tar -czf '.$filename.'', $output, $return);

你认为可以做到吗?

感谢您的帮助。

2 个答案:

答案 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响应头。