Параметр Composer -d memory_limit игнорируется, если его размер превышает 1,5 ГБ

При запуске composer команда выходит из памяти при достижении 1,5 ГБ оперативной памяти. Даже при передаче явного memory_limit с php -d memory_limit=-1 composer.phar ... , он выходит из памяти на 1.5G. Похоже, переданный параметр просто игнорируется.

Когда я перехожу к более низкому значению (125 м), на этом пределе не хватает памяти. На моем компьютере с Windows все еще есть свободная память, так что это не системное ограничение.

версия 1.6.5. Мой предел памяти php.ini установлен на -1.

Кто-нибудь еще переживает это? Почему композитору не хватает памяти при использовании 1.5G?

Вы уверены, что установили ограничение памяти на -1 в вашем файле php.ini? Я имею ввиду нужный ini файл?

Nimeshka Srimal 10.07.2018 10:32

Думаю, вам нужен php -d memory_limit=-1 composer.phar, иначе вариант не будет потребляется интерпретатором.

Yoshi 10.07.2018 10:37

Я четко заявляю в своем вопросе, что передача -d memoty_limit = -1, похоже, игнорируется. Кроме того, любое другое значение, превышающее 1,5 ГБ, по-прежнему приводит к нехватке памяти для команды при достижении 1,5 ГБ оперативной памяти.

nexana 10.07.2018 11:21

Я установил memory_limit в правом файле php.ini, когда я запускаю php -r "echo ini_get('memory_limit').PHP_EOL;" , он возвращает значение -1.

nexana 10.07.2018 11:25

@nexana В своем вопросе вы утверждаете, что используете php composer.phar -d memory_limit=-1, что является неправильным порядком аргументов. Если вы хотите настроить интерпретатор php, значение должно быть передcomposer.phar. Справка:php [options] [-f] <file> [--] [args...]

Yoshi 10.07.2018 11:59

@Yoshi, тоже пробовал, с тем же результатом.

nexana 10.07.2018 12:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
6
4 596
2

Ответы 2

На странице композитора устранять неполадки вы можете увидеть несколько вариантов решения этой проблемы.

Вы можете установить переменную среды 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 ГБ.

nexana 10.07.2018 11:19

Пробовали запускать как COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>?

Nimeshka Srimal 10.07.2018 11:21

Нимешка Сримал, да, я пробовал установить переменную окружения на -1, но с тем же результатом.

nexana 10.07.2018 11:24

Вы работаете в Windows? Могу я узнать, как вы устанавливаете переменную Env?

Nimeshka Srimal 10.07.2018 12:07

Да. Я установил его через системные настройки - переменные среды - новая системная переменная

nexana 10.07.2018 12:14

@nexana печатает -1, если вы запускаете команду echo %COMPOSER_MEMORY_LIMIT% в командной строке? Если нет, вы можете установить его перед запуском команды composer с помощью set COMPOSER_MEMORY_LIMIT=-1, а затем запустить composer.phar. Я думаю, это определенно должно сработать.

Nimeshka Srimal 10.07.2018 12:23

Я сделал, как вы сказали. Он действительно печатает -1 как установленное значение параметра, но проблема остается ...

nexana 10.07.2018 13:06

Это странно. Думаю, я перепробовал все, что знаю :) И последнее, не могли бы вы рассказать больше о "Windows-машине", которую вы используете? вы используете это локально? Это случайно 32 бита? Или ваш php / apache 32-битный? Вы можете проверить, 32 или 64 бит, запустив php -r "echo PHP_INT_MAX;" в командной строке, или вы можете повторить эту константу в скрипте php. Если это значение 2147483647, значит, он работает в 32-битном режиме. Если это так, это может быть причиной, потому что по умолчанию вы знаете, что 32-битные процессы ограничены 2 ГБ максимальной оперативной памяти. Пожалуйста, проверьте это. Если это не так, то я понятия не имею;)

Nimeshka Srimal 10.07.2018 18:55

Я нашел решение для всех, кому интересно.

Кажется, что 32-битная версия php для Windows жестко ограничена потреблением 2 ГБ оперативной памяти. Если ваше приложение превышает 2G, оно останавливается.

Решением для меня было переключиться на 64-битные версии моей установки php. 64-битная версия имеет ограничение памяти 3G.

@Nimeshka Я очень благодарен за ваши усилия, но ваш комментарий был опубликован через 4 часа после того, как я отправил свой ответ.

nexana 12.07.2018 09:54

Другие вопросы по теме