При запуске composer команда выходит из памяти при достижении 1,5 ГБ оперативной памяти.
Даже при передаче явного memory_limit с
php -d memory_limit=-1 composer.phar ...
, он выходит из памяти на 1.5G. Похоже, переданный параметр просто игнорируется.
Когда я перехожу к более низкому значению (125 м), на этом пределе не хватает памяти. На моем компьютере с Windows все еще есть свободная память, так что это не системное ограничение.
версия 1.6.5. Мой предел памяти php.ini установлен на -1.
Кто-нибудь еще переживает это? Почему композитору не хватает памяти при использовании 1.5G?
Думаю, вам нужен php -d memory_limit=-1 composer.phar, иначе вариант не будет потребляется интерпретатором.
Я четко заявляю в своем вопросе, что передача -d memoty_limit = -1, похоже, игнорируется. Кроме того, любое другое значение, превышающее 1,5 ГБ, по-прежнему приводит к нехватке памяти для команды при достижении 1,5 ГБ оперативной памяти.
Я установил memory_limit в правом файле php.ini, когда я запускаю php -r "echo ini_get('memory_limit').PHP_EOL;" , он возвращает значение -1.
@nexana В своем вопросе вы утверждаете, что используете php composer.phar -d memory_limit=-1, что является неправильным порядком аргументов. Если вы хотите настроить интерпретатор php, значение должно быть передcomposer.phar. Справка:php [options] [-f] <file> [--] [args...]
@Yoshi, тоже пробовал, с тем же результатом.






На странице композитора устранять неполадки вы можете увидеть несколько вариантов решения этой проблемы.
Вы можете установить переменную среды COMPOSER_MEMORY_LIMIT перед запуском команды композитора:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
Или вы устанавливаете с аргументом командной строки:
php -d memory_limit=-1 composer.phar <...>
Если вы установили ограничение памяти в вашем файле php.ini, это значение также должно быть принято композитором. Вы можете узнать, какой у вас текущий лимит памяти, выполнив следующую команду:
php -r "echo ini_get('memory_limit').PHP_EOL;"
Надеюсь, поможет :)
Может быть, я недостаточно ясно ответил на свой вопрос, но я четко заявляю, что передача этого аргумента игнорируется, если он превышает 1,5 ГБ.
Пробовали запускать как COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>?
Нимешка Сримал, да, я пробовал установить переменную окружения на -1, но с тем же результатом.
Вы работаете в Windows? Могу я узнать, как вы устанавливаете переменную Env?
Да. Я установил его через системные настройки - переменные среды - новая системная переменная
@nexana печатает -1, если вы запускаете команду echo %COMPOSER_MEMORY_LIMIT% в командной строке? Если нет, вы можете установить его перед запуском команды composer с помощью set COMPOSER_MEMORY_LIMIT=-1, а затем запустить composer.phar. Я думаю, это определенно должно сработать.
Я сделал, как вы сказали. Он действительно печатает -1 как установленное значение параметра, но проблема остается ...
Это странно. Думаю, я перепробовал все, что знаю :) И последнее, не могли бы вы рассказать больше о "Windows-машине", которую вы используете? вы используете это локально? Это случайно 32 бита? Или ваш php / apache 32-битный? Вы можете проверить, 32 или 64 бит, запустив php -r "echo PHP_INT_MAX;" в командной строке, или вы можете повторить эту константу в скрипте php. Если это значение 2147483647, значит, он работает в 32-битном режиме. Если это так, это может быть причиной, потому что по умолчанию вы знаете, что 32-битные процессы ограничены 2 ГБ максимальной оперативной памяти. Пожалуйста, проверьте это. Если это не так, то я понятия не имею;)
Я нашел решение для всех, кому интересно.
Кажется, что 32-битная версия php для Windows жестко ограничена потреблением 2 ГБ оперативной памяти. Если ваше приложение превышает 2G, оно останавливается.
Решением для меня было переключиться на 64-битные версии моей установки php. 64-битная версия имеет ограничение памяти 3G.
@Nimeshka Я очень благодарен за ваши усилия, но ваш комментарий был опубликован через 4 часа после того, как я отправил свой ответ.
Вы уверены, что установили ограничение памяти на -1 в вашем файле php.ini? Я имею ввиду нужный ini файл?