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; }