it-swarm.com.ru

Composer Ошибка обновления - недостаточно памяти

Я получил эту ошибку при запуске composer.phar update на моей виртуальной машине:

Неустранимая ошибка PHP: допустимый объем памяти 1073741824 байта исчерпан (попытка выделить 144115188075867549 байтов) в phar: ///bin/composer.phar/src/Composer/Util/RemoteFilesystem.php в строке 179

composer.json, если необходимо:

{
        "description" : "The CodeIgniter framework",
        "name" : "codeigniter/framework",
        "license": "MIT",
        "require": {
                "php": ">=5.2.4",
                "videlalvaro/php-amqplib": "2.5.*"
        },
        "require-dev": {
                "mikey179/vfsStream": "1.1.*",
                "videlalvaro/php-amqplib": "2.5.*"
        }
}

VM только что восстановился после проблемы с поврежденным сектором диска, и парень, работавший с VM, сказал, что VM перемещен на новый диск. В моей виртуальной машине есть только Java, PHP, httpd, postgre, rabbitmq и сам веб-сайт, и он уже отлично работал в течение примерно 4 месяцев, прежде чем это произошло. Я использую PHP 5.6.11. Может кто-нибудь помочь, пожалуйста?

7
Aldibe

Решил, удалив всю папку vendor, а затем снова выполнив обновление композитора, и это работает ... как-то. Я даже не понимаю: V

5
Aldibe

Проверьте поиск и устранение неисправностей Composer wiki, особенно раздел об ошибках ограничения памяти.

Например, запустив композитор следующим образом:

php -d memory_limit=-1 `which composer` update

Я больше не получаю ошибки. Таким образом, это, вероятно, недостаточная проблема с памятью, которая может быть решена встроенным образом без изменения конфигурации по умолчанию PHP.

Команда, приведенная выше, заключается в том, что она устанавливает предел памяти CLI PHP равным «unlimited» (т.е. -1), а затем запускает встроенную команду composer update.

Обратите внимание, что вместо `which composer` вам, вероятно, следует использовать реальный путь к вашему сценарию composer.phar PHP. Встроенный which composer (как в моем примере выше) будет встроен в ваш полный путь composer.phar (вы можете использовать любую форму).

12
Eugen Mihailescu

Единственное, что решило мою проблему, делало это: 

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

REF: УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ КОМПОЗИТОРА

8
katiak

Это проблема с памятью, а не проблема с памятью .. Вы достигли предела PHP памяти.

Отредактируйте /etc/php.ini и увеличьте лимит памяти (memory_limit = 128M замените на memory_limit = 256M)

Я бы посоветовал вам найти причину, по которой композитор использует так много памяти, и найти способы сократить использование памяти PHP:

  1. Обновите до PHP56, если вы еще этого не сделали
  2. Установите Zend Opcache (разделяет память PHP между различными экземплярами)
  3. Удалите все неиспользуемые расширения PECL

Это проблема, с которой вы столкнулись: https://github.com/composer/composer/issues/1898

3
DannyZB

По моему опыту, ошибки памяти в composer обычно означают, что он тратит слишком много памяти на поиск правильных комбинаций пакетов для установки, особенно ограничения версии недостаточно конкретны. Например, ^ 5.2.4 соответствует 5.3–5.3.29, 5.4–5.4.45 и т.д. Для каждой конкретной версии и перестановки составитель должен получить зависимости пакета, чтобы проверить, все ли ограничения соблюдены. Обычно это происходит, когда потребление памяти становится огромным. 

Как только версии выяснены, фаза установки использует намного меньше памяти. Разрешенные версии для каждого пакета также хранятся в файле composer.lock, так что конкретная установленная перестановка может быть реплицирована в других средах. И это потенциальное решение вашей проблемы: запустите обновление composer на своем компьютере разработчика (на котором должно быть достаточно памяти), разверните обновленный composer.lock и запустите установку composer на сервере. 

Установка Composer всегда будет ссылаться на существующий файл composer.lock для версий, устанавливаемых для каждого пакета, и, таким образом, редко будет сталкиваться с проблемами памяти.

Для получения справки о том, как выразить ограничения версии в composer.json, проверьте https://getcomposer.org/doc/articles/versions.md

2
squall3d

В моем случае я столкнулся с этой ошибкой из-за запуска composer install внутри vagrant box. Запуск его на моем хост-компьютере не вызвал проблемы.

0
SiteTester