瀏覽代碼

Check if current dir is writable and if not try the cache dir from settings

Dimitrios Kanellopoulos 11 年之前
父節點
當前提交
95a9ac880b
共有 1 個文件被更改,包括 6 次插入3 次删除
  1. 6 3
      src/Composer/Command/SelfUpdateCommand.php

+ 6 - 3
src/Composer/Command/SelfUpdateCommand.php

@@ -47,11 +47,14 @@ EOT
         $cacheDir = $config->get('cache-dir');
 
         $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0];
-        $tempFilename = $cacheDir . basename($localFilename, '.phar').'-temp.phar';
+
+        // Check if current dir is writable and if not try the cache dir from settings
+        $tmpDir = is_writable(dirname($localFilename))? dirname($localFilename) . '/' : $cacheDir;
+        $tempFilename = $tmpDir . basename($localFilename, '.phar').'-temp.phar';
 
         // check for permissions in local filesystem before start connection process
-        if (!is_writable($tempDirectory = dirname($tempFilename))) {
-            throw new FilesystemException('Composer update failed: the "'.$tempDirectory.'" directory used to download the temp file could not be written');
+        if (!is_writable($tmpDir)) {
+            throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written');
         }
 
         if (!is_writable($localFilename)) {