From 59c6b9b26a589c2ac674b965876f171f7acf509f Mon Sep 17 00:00:00 2001 From: llcool Date: Mon, 7 Nov 2022 16:54:56 +0000 Subject: [PATCH] Downloading file - PHP warning loop "Permission denied" (#879) * Bugfix: Stop looping error when downloading a file with no access. * Delete .history directory ignore .history --- tinyfilemanager.php | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/tinyfilemanager.php b/tinyfilemanager.php index 35fd57a..5ac361f 100644 --- a/tinyfilemanager.php +++ b/tinyfilemanager.php @@ -3060,6 +3060,26 @@ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) $contentType = implode(' ', $contentType); } + $size = filesize($fileLocation); + + if ($size == 0) { + fm_set_msg(lng('Zero byte file! Aborting download'), 'error'); + fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); + + return (false); + } + + @ini_set('magic_quotes_runtime', 0); + $fp = fopen("$fileLocation", "rb"); + + if ($fp === false) { + fm_set_msg(lng('Cannot open file! Aborting download'), 'error'); + fm_redirect(FM_SELF_URL . '?p=' . urlencode(FM_PATH)); + + return (false); + + } + header("Cache-Control: public"); header("Content-Transfer-Encoding: binary\n"); header("Content-Type: $contentType"); @@ -3076,7 +3096,6 @@ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) header("Accept-Ranges: bytes"); $range = 0; - $size = filesize($fileLocation); if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); @@ -3092,12 +3111,6 @@ function fm_download_file($fileLocation, $fileName, $chunkSize = 1024) header("Content-Length: " . $size); } - if ($size == 0) { - die('Zero byte file! Aborting download'); - } - @ini_set('magic_quotes_runtime', 0); - $fp = fopen("$fileLocation", "rb"); - fseek($fp, $range); while (!feof($fp) and (connection_status() == 0)) {