diff --git a/core/Command/Maintenance/UpdateHtaccess.php b/core/Command/Maintenance/UpdateHtaccess.php
index 67c6db22b21ca..9243567afb4b7 100644
--- a/core/Command/Maintenance/UpdateHtaccess.php
+++ b/core/Command/Maintenance/UpdateHtaccess.php
@@ -39,7 +39,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$output->writeln('.htaccess has been updated');
return 0;
} else {
- $output->writeln('Error updating .htaccess file, not enough permissions or "overwrite.cli.url" set to an invalid URL?');
+ $output->writeln('Error updating .htaccess file, not enough permissions, not enough free space or "overwrite.cli.url" set to an invalid URL?');
return 1;
}
}
diff --git a/lib/private/Setup.php b/lib/private/Setup.php
index e763b6d39c1d6..4fea5d72591f0 100644
--- a/lib/private/Setup.php
+++ b/lib/private/Setup.php
@@ -560,6 +560,14 @@ public static function updateHtaccess() {
}
if ($content !== '') {
+ // Never write file back if disk space should be too low
+ if (function_exists('disk_free_space')) {
+ $df = disk_free_space(\OC::$SERVERROOT);
+ $size = strlen($content) + 10240;
+ if ($df !== false && $df < (float)$size) {
+ throw new \Exception(\OC::$SERVERROOT . " does not have enough space for writing the htaccess file! Not writing it back!");
+ }
+ }
//suppress errors in case we don't have permissions for it
return (bool)@file_put_contents($setupHelper->pathToHtaccess(), $htaccessContent . $content . "\n");
}