From: Jerome Jutteau Date: Mon, 4 Jul 2022 21:38:25 +0000 (+0200) Subject: [BUGFIX] Manage PHP configuration with "unlimited" upload X-Git-Tag: 4.5.0~18 X-Git-Url: https://git.p6c8.net/jirafeau_mojo42.git/commitdiff_plain/1581d41cc21d3ec5609fe3d2c1e6acec2b348170?ds=sidebyside [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 --- 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; } /**