成功下载后无法提取sql.gz

时间:2016-09-09 04:48:12

标签: php mysql

我为备份数据库编写代码。 当我试图以sql.gz格式下载文件时,它成功下载,但我无法提取它。它告诉我这个: -

  

加载档案时发生错误

每次它的大小只显示620字节但原始.sql文件大小很大(大于1 MB)

  $path=$result_array['path'];
  $filename = basename($path);
  $full_path = base_url()."database_backup/";
  $len = filesize($full_path.$path);
  header("Content-Encoding: binary");
  header("Content-Type: application/octet-stream");
  header( "content-length: " . $len );
  header( "content-disposition: attachment; filename=" . $filename );
  header("Expires: 0");
  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  header("Cache-Control: private");
  header("Pragma: public");
  ob_clean();
  $fp=fopen( $full_path, "r" );
  fpassthru( $fp );
  exit;

所以请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

您的脚本中存在错误路径,请比较您问题中的这两行代码:

$len = filesize($full_path.$path);

$fp=fopen( $full_path, "r" );

我认为第二个应该是:

$fp=fopen( $full_path . $path, "r" );

但是,如果可以的话,用$ filename替换$ path以避免任意文件泄露($ path可能类似" ../../../../../../ etc / passwd的&#34)