我有一个运行bash脚本的php页面然后下载输出tar。问题是,一旦下载文件,页面就会继续加载,永远不会重定向。我发现了一些像这样的问题,但似乎没有什么适用于我的情况。我的代码如下:
<?php
$output=shell_exec('cd /opt/dir/ && sudo ./collect_diagnostics.sh && cd -');
$rows_output = explode("Report is in ", $output);
$rows_output2 = explode(" ", $rows_output[1]);
$path_parts = pathinfo($rows_output2[0]);
$file_name = $path_parts['basename'];
$file_path = "/opt/dir/test/".$file_name;
if (is_readable($file_path )) {
header('Content-Disposition: attachment; filename="'.$file_name.'"');
ob_clean();
readfile($file_path);
} else {
echo "404 Error";
}
header( 'Location:./aps_control.php' ) ;
?>
只是要清楚我有bash脚本工作,下载确实发生并且有一个有效的文件。唯一的问题似乎是页面永远不会完成加载,我不确定这是否相关,但是在7-zip解包时的文件说&#34;有效载荷数据结束后有一些数据:version_Placeholder.tar& #34 ;.另外,我真的想知道我为个人改进做错了什么。
我学习如何下载文件的主要资源是http://www.media-division.com/the-right-way-to-handle-file-downloads-in-php/
答案 0 :(得分:1)
您不应该尝试显示页面并在同一请求中提供文件。只需提供文件。
如果您希望用户使用后退按钮转到新页面,则应将其重定向到该页面,该页面应触发执行下载的新页面。不要把它们结合起来。