From 1581d41cc21d3ec5609fe3d2c1e6acec2b348170 Mon Sep 17 00:00:00 2001 From: Jerome Jutteau Date: Mon, 4 Jul 2022 23:38:25 +0200 Subject: [PATCH 1/1] [BUGFIX] Manage PHP configuration with "unlimited" upload Setting `post_max_size` and `upload_max_filesize` PHP options to "0" is unmanaged by Jirafeau. It tries to send 0 bytes and Javascript have some zero division errors. This commit will use $max_upload_chunk_size_bytes option when available. If $max_upload_chunk_size_bytes is also set to zero, chunk size is set an arbitrary value of 10M. Non html-5 users will not have size limitation shown. fixes #272 Signed-off-by: Jerome Jutteau --- index.php | 7 +++++-- lib/functions.php | 22 ++++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/index.php b/index.php index 1a8b2bd..33bb83e 100644 --- a/index.php +++ b/index.php @@ -299,8 +299,11 @@ elseif (true === jirafeau_challenge_upload_ip($cfg, get_ip_address($cfg))) { document.getElementById('send').style.display = 'none'; if (!check_html5_file_api ()) document.getElementById('max_file_size').innerHTML = ''; + $max_size = jirafeau_get_max_upload_size(); + if ($max_size > 0) { + echo t('NO_BROWSER_SUPPORT') . $max_size; + } + ?>'; addCopyListener('upload_link_button', 'upload_link'); addCopyListener('preview_link_button', 'preview_link'); diff --git a/lib/functions.php b/lib/functions.php index 536bfe1..cfc7dce 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -235,13 +235,23 @@ function jirafeau_get_max_upload_size() */ function jirafeau_get_max_upload_chunk_size_bytes($max_upload_chunk_size_bytes = 0) { - if ($max_upload_chunk_size_bytes > 0) { - return min( - jirafeau_get_max_upload_size_bytes(), - $max_upload_chunk_size_bytes - ); + if ($max_upload_chunk_size_bytes == 0) { + $size = jirafeau_get_max_upload_size_bytes(); + // Jirafeau must choose an arbitrary number as PHP config does not give any limit nor $max_upload_chunk_size_bytes + if ($size == 0) { + return 10000000; // 10MB + } + return $size; } - return jirafeau_get_max_upload_size_bytes(); + + $size = min( + jirafeau_get_max_upload_size_bytes(), + $max_upload_chunk_size_bytes + ); + if ($size == 0) { + return $max_upload_chunk_size_bytes; + } + return $size; } /** -- 2.34.1