From 91a5a73dca110aad9f44a90ebfc089517ae351b6 Mon Sep 17 00:00:00 2001 From: 3D-I <480857+3D-I@users.noreply.github.com> Date: Tue, 9 Feb 2021 23:43:15 +0100 Subject: [PATCH] [ticket/16705] Fix check_disk_space function PHPBB3-16705 --- phpBB/language/en/posting.php | 1 + phpBB/phpbb/attachment/upload.php | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/phpBB/language/en/posting.php b/phpBB/language/en/posting.php index 1a6866d535..4d2ce46252 100644 --- a/phpBB/language/en/posting.php +++ b/phpBB/language/en/posting.php @@ -46,6 +46,7 @@ $lang = array_merge($lang, array( 'ATTACH_COMMENT_NO_EMOJIS' => 'The attachment comment contains forbidden characters (Emoji).', 'ATTACH_DISK_FULL' => 'There is not enough free disk space to post this attachment.', 'ATTACH_QUOTA_REACHED' => 'Sorry, the board attachment quota has been reached.', + 'ATTACH_DISK_FREE_SPACE' => 'Sorry, the PHP disk_free_space function is disabled in this system.', 'ATTACH_SIG' => 'Attach a signature (signatures can be altered via the UCP)', 'BBCODE_A_HELP' => 'Inline uploaded attachment: [attachment=]filename.ext[/attachment]', diff --git a/phpBB/phpbb/attachment/upload.php b/phpBB/phpbb/attachment/upload.php index ca83f9dabf..52f60348a9 100644 --- a/phpBB/phpbb/attachment/upload.php +++ b/phpBB/phpbb/attachment/upload.php @@ -296,8 +296,10 @@ class upload */ protected function check_disk_space() { - if ($free_space = @disk_free_space($this->phpbb_root_path . $this->config['upload_path'])) + if (function_exists('disk_free_space')) { + $free_space = disk_free_space($this->phpbb_root_path); + if ($free_space <= $this->file->get('filesize')) { if ($this->auth->acl_get('a_')) @@ -315,6 +317,16 @@ class upload return false; } } + else + { + $this->file_data['error'][] = $this->language->lang('ATTACH_DISK_FREE_SPACE'); + + $this->file_data['post_attach'] = false; + + $this->file->remove(); + + return false; + } return true; }