it-swarm.com.ru

PHP Composer обновление «невозможно выделить память» ошибка (используется Laravel 4)

Я просто не могу решить это.

Я на Linode 1G RAM базовый план. Попытка установить пакет через Composer, и это не позволяет мне. Мой предел памяти установлен на "-1" на PHP.ini

Что-нибудь еще, что я могу сделать, чтобы установить это?

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing thujohn/rss (dev-master df80a7d)
    Downloading: 100%         
PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975

Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975
110
ericbae

Немного устаревший, но на случай, если кто-то новый ищет решение, обновление вашей версии PHP может решить эту проблему.

Также вам следует зафиксировать файл composer.lock и выполнить установку composer в производственной среде, которая требует меньше ресурсов.

Более подробно здесь: https://github.com/composer/composer/issues/1898#issuecomment-23453850

54
fl3x7

Похоже, вам не хватает памяти подкачки, Попробуйте это

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

как упомянуто @ BlackBurn027 в комментариях ниже, это решение было описано в здесь

225
Aditya Kresna Permana

Я столкнулся с той же проблемой. Я нахожусь на бесплатной микроинстанции AWS, у которой меньше памяти. Я всегда пробую один из приведенных ниже вариантов, и он всегда работает (Перед всем этим, пожалуйста, проверьте, установлена ​​ли у вас последняя версия composer)

Sudo php -dmemory_limit=750M composer.phar update

или удалите содержимое папки vendor и попробуйте обновить композитор.

Sudo rm -rf vendor
Sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist
Sudo php artisan --dump-autoload

Второй вариант пытается обновить все компоненты, если обновления нет, он выбирает пакет из кеша, а другой - из дистрибутива.

Примечание: пожалуйста, измените ограничение памяти согласно вашему выбору.

или же 

Создайте раздел подкачки и попробуйте. Раздел подкачки - это часть жесткого диска, которую Linux использует в качестве виртуальной памяти, когда в ней заканчивается физическая память. Это похоже на файл подкачки Windows вместо того, чтобы использовать настоящий файл, вместо этого Linux использует раздел на жестком диске.

Надеюсь это поможет

32
Abishek

Как руководство по устранению неполадок композитора здесь Это может произойти, потому что VPS не хватает памяти и не имеет пространства подкачки включен.

free -m

Чтобы включить обмен, вы можете использовать, например:

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

Просто введите следующие команды:

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

Должен работать на машинах с малым объемом памяти

11
insign

У меня была такая же проблема на бродяге. Я исправил это все больше памяти.

 config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
 end
10
Yann叶

Попробуй это:

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

/sbin/mkswap /var/swap.1

/sbin/swapon /var/swap.1
5
Ayo 'Lana

Вот обходной путь, который я нашел, который работает для меня каждый раз:

df -h 
dd if=/dev/zero of=/swapfile bs=1M count=1024
Sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile
echo 'echo "/swapfile  none  swap  defaults  0  0" >> /etc/fstab' | Sudo sh

free -m

confirm u see your swap there:
total used free shared buffers cached
Mem: 494 335 158 0 19 62
-/+ buffers/cache: 254 240
Swap: 1023 3 1020

watch free -m
5
Goran

Это, кажется, повторяющаяся проблема с 1 ГБ и меньшими экземплярами сервера. Помимо попыток завершения процессов и настроек подкачки, вы можете установить их на локальный компьютер и загрузить.

4
Makita

Вот шаги по устранению проблемы: (Используется метод быстрого и быстрого выделения файлов SWAP)

Настройка SWAP на сервере (Ubuntu 16.04 SWAP исправляет ошибки нехватки памяти)

Проверьте, если у вас уже есть своп, память и размер диска:

    Sudo swapon -s
    free -m
    df -h

Создайте файл подкачки: (измените 1G на 4G, если вы хотите 4GB памяти SWAP)

    Sudo fallocate -l 1G /swapfile 

Проверьте файл подкачки:

    ls -lh /swapfile

Назначить файл подкачки:

    Sudo chmod 600 /swapfile
    Sudo mkswap /swapfile
    Sudo swapon /swapfile

Проверьте, нормально ли поменяны местами память, размер диска и:

    Sudo swapon -s
    free -m
    df -h

Прикрепить файл подкачки при перезагрузке системы:

    Sudo nano /etc/fstab
        /swapfile   none    swap    sw    0   0

Настройте параметры файла подкачки: 

    cat /proc/sys/vm/swappiness
    cat /proc/sys/vm/vfs_cache_pressure

    Sudo sysctl vm.swappiness=10
    Sudo sysctl vm.vfs_cache_pressure=50

    Sudo nano /etc/sysctl.conf

Приоритет файла SWAP: (0-100% => 0: не помещать в своп, 100: ставить SWAP и освобождать оперативную память)

        vm.swappiness=10

Удалить inode из кэша: (100: система слишком быстро удаляет информацию inode из кэша)

        vm.vfs_cache_pressure = 50
3
Tarik

Попробуй это:

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

Эта работа для меня на Centos 6

3
Adonias

Иногда путем самообновления композитора это решает проблему

php composer.phar self-update

Ура

3
Titogelo

В большинстве случаев я попадаю в эту ситуацию, поэтому обычно я выполняю действия по настройке подкачки памяти.

Но теперь я нашел простой альтернативный трюк, который работал для меня.

Бежать composer update --no-dev кроме composer update

2
Bastin Robin

Я решил ту же проблему в Vagrant . Я увеличил значение memory_limit И удалил кэш композитора: Sudo rm -R ~/.composer И, наконец, перезагрузил vagrant.

2
oussaka

у меня такая же проблема с обновлением php composer.phar на моем хостинге 512 Мб.

решено с помощью php composer.phar install

1
ivan.proskuryakov

Я увеличил PHP memory_limit со 128М по умолчанию до 512М и перезапустил сервер. Это решило проблему.

0
Aris

У меня была похожая проблема на самом дешевом сервере (512 МБ ОЗУ), размещенном с DigitalOcean , и я также использовал Jenkins CI на том же сервере. После того, как я остановил экземпляр Jenkins, команда установки composer сработала (ну, в какой-то момент, она потерпела неудачу с отсутствующим расширением mcrypt, кроме того, что оно уже установлено!).

Возможно, если на сервере запущено другое приложение, возможно, стоит попытаться остановить его и повторно запустить команду.

0
Chris
composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)

> mmap () не удалось: [12] Невозможно выделить память

Обновите память на сервере и потребуйте «4G». Измените оперативную память 4 ГБ [попробуйте изменить тип сервера или добавьте больше оперативной памяти].

2 файла нам нужно отредактировать


по команде

# cd /var/www/html
# nano .htaccess

и отредактируйте "memory_limit 756M” в 4G


Php ini на php 7.0

# cd ~
# php –-ini
# Sudo nano /etc/php-7.0.ini

memory_limit = 128M до 4G

#AWS #AMAZONLINUX # MAGENTO2 # PHP7.0

0
SUNNETmedia

Я попытался, просто удалив папку поставщика и файл composer.lock, а затем запустил команду «composer clear-cache», а затем установил composer. Так что это работает без каких-либо ошибок.

0
Manjunath A

Сделайте своп и снова запустите команду composer. Я надеюсь, что это сработает для вас.

 $ dd if=/dev/zero of=/swapfile bs=1024 count=512k
 $ mkswap /swapfile
 $ swapon /swapfile
 $ echo "/swapfile       none    swap    sw      0       0 " >> /etc/fstab
 $ echo 0 > /proc/sys/vm/swappiness
 $ chown root:root /swapfile
 $ chmod 0600 /swapfile
0
nixon1333

отредактируйте файл php.ini и увеличьте значение memory_limit. 

memory_limit = 1G

решит эту проблему.

0
Amjith