Эх сурвалжийг харах

Merge remote-tracking branch 'chEbba/memory_limit'

Conflicts:
	bin/composer
Jordi Boggiano 12 жил өмнө
parent
commit
3946a44499

+ 22 - 1
bin/composer

@@ -9,7 +9,28 @@ error_reporting(-1);
 
 if (function_exists('ini_set')) {
     @ini_set('display_errors', 1);
-    @ini_set('memory_limit', '512M');
+
+    $memoryInBytes = function ($value) {
+        $unit = strtolower(substr($value, -1, 1));
+        $value = (int) $value;
+        switch($unit) {
+            case 'g':
+                $value *= 1024;
+            case 'm':
+                $value *= 1024;
+            case 'k':
+                $value *= 1024;
+        }
+
+        return $value;
+    };
+
+    $memoryLimit = trim(ini_get('memory_limit'));
+    // Increase memory_limit if it is lower than 512M
+    if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 512 * 1024 * 1024) {
+        @ini_set('memory_limit', '512M');
+    }
+    unset($memoryInBytes, $memoryLimit);
 }
 
 // run the command application

+ 27 - 0
doc/articles/troubleshooting.md

@@ -0,0 +1,27 @@
+<!--
+    tagline: Solving problems
+-->
+# Memory limit errors
+
+If composer shows memory errors on some commands:
+
+    PHP Fatal error:  Allowed memory size of XXXXXX bytes exhausted <...>
+
+The `memory_limit` ini value should be increased.
+
+> **Note:** Composer internally increases the memory_limit to 512M.
+> It is a good idea to create an issue for composer if you get memory errors.
+
+Get current value:
+
+    php -r "echo ini_get('memory_limit').PHP_EOL;"
+
+Increase limit with `php.ini` for a `CLI SAPI` (ex. `/etc/php5/cli/php.ini` for Debian-like systems):
+
+    ; Use -1 for unlimited or define explicit value like 512M
+    memory_limit = -1
+
+Or with command line arguments:
+
+    php -d memory_limit=-1 composer.phar <...>
+