diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php index 6406beaeebc0b..1318b1c401d74 100644 --- a/lib/private/Files/Storage/Local.php +++ b/lib/private/Files/Storage/Local.php @@ -279,6 +279,8 @@ public function file_get_contents($path) { public function file_put_contents($path, $data) { $oldMask = umask(022); + // support Write-Once-Read-Many filesystems + $this->unlink($path); $result = file_put_contents($this->getSourcePath($path), $data); umask($oldMask); return $result; @@ -360,6 +362,10 @@ public function copy($path1, $path2) { public function fopen($path, $mode) { $oldMask = umask(022); + if ($mode === 'w') { + // support Write-Once-Read-Many filesystems + $this->unlink($path); + } $result = fopen($this->getSourcePath($path), $mode); umask($oldMask); return $result;