diff --git a/src/Composer/Cache.php b/src/Composer/Cache.php
index df45e66ed..fe2b97c59 100644
--- a/src/Composer/Cache.php
+++ b/src/Composer/Cache.php
@@ -114,21 +114,21 @@ class Cache
$this->io->writeError('Writing '.$this->root . $file.' into cache', true, IOInterface::DEBUG);
+ $tempFileName = $this->root . $file . uniqid('.', true) . '.tmp';
try {
- $tempFileName = $this->root . $file . uniqid('.tmp.', true);
return file_put_contents($tempFileName, $contents) !== false && rename($tempFileName, $this->root . $file);
} catch (\ErrorException $e) {
$this->io->writeError('Failed to write into cache: '.$e->getMessage().'', true, IOInterface::DEBUG);
if (preg_match('{^file_put_contents\(\): Only ([0-9]+) of ([0-9]+) bytes written}', $e->getMessage(), $m)) {
// Remove partial file.
- unlink($this->root . $file);
+ unlink($tempFileName);
$message = sprintf(
'Writing %1$s into cache failed after %2$u of %3$u bytes written, only %4$u bytes of free space available',
- $this->root . $file,
+ $tempFileName,
$m[1],
$m[2],
- @disk_free_space($this->root . dirname($file))
+ @disk_free_space($this->root . dirname($tempFileName))
);
$this->io->writeError($message);