diff --git a/src/Composer/Json/JsonFile.php b/src/Composer/Json/JsonFile.php index 08a91d2f3..343fbf155 100644 --- a/src/Composer/Json/JsonFile.php +++ b/src/Composer/Json/JsonFile.php @@ -64,6 +64,19 @@ class JsonFile */ public function write(array $hash) { + $dir = dirname($this->path); + if (!is_dir($dir)) { + if (file_exists($dir)) { + throw new \UnexpectedValueException( + $dir.' exists and is not a directory.' + ); + } + if (!mkdir($dir, 0777, true)) { + throw new \UnexpectedValueException( + $dir.' does not exist and could not be created.' + ); + } + } file_put_contents($this->path, json_encode($hash)); }