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


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

Я нахожусь на базовом плане оперативной памяти Linode 1G. Пытаюсь установить пакет через 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
Author: Antonio Carlos Ribeiro, 2013-08-08

20 answers

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

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

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

 45
Author: fl3x7, 2013-10-04 10:49:55

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

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

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

 181
Author: Aditya Kresna Permana, 2017-05-08 15:47:13

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

sudo php -dmemory_limit=750M composer.phar update

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

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

Второй вариант пытается обновить все компоненты, если обновления нет, он извлекает пакет из кэша, который еще извлекает из дист

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

Или

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

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

 30
Author: Abishek, 2013-08-08 06:54:20

У меня была такая же проблема с бродягой. Я исправил это, увеличив объем памяти.

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

Легко, введите следующие команды:

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

Должно работать для машин с низким объемом памяти

 8
Author: insign, 2014-08-30 02:26:40

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

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
Author: Goran, 2014-10-01 05:28:51

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

 4
Author: Makita, 2013-08-08 01:46:08

В качестве руководства по устранению неполадок композитора здесь Это может происходить из-за того, что у 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
 4
Author: Umair Hamid, 2017-12-29 15:27:23

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

/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
Author: Adonias, 2016-06-11 17:33:19

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

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

/sbin/mkswap /var/swap.1

/sbin/swapon /var/swap.1
 3
Author: Ayo 'Lana, 2018-01-27 14:54:01

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

php composer.phar self-update

Приветствия

 2
Author: Titogelo, 2015-09-17 18:47:32

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

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

Выполнить composer update --no-dev Кроме composer update

 2
Author: Bastin Robin, 2015-12-30 03:57:25

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

 2
Author: oussaka, 2016-05-15 14:47:13

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

### Server SWAP Setup (Ubuntu 16.04 SWAP to Fix Out of Memory Errors)

    # Check if you have swap already, memory and disk size:
        sudo swapon -s
        free -m
        df -h
    # Make swap file: (change 1G to 4G if you want 4GB SWAP memory)
        sudo fallocate -l 1G /swapfile 

    # Check swap file:
        ls -lh /swapfile

    # Assign Swap File:
        sudo chmod 600 /swapfile
        sudo mkswap /swapfile
        sudo swapon /swapfile

    # Check if swap OK, memory and disk size:
        sudo swapon -s
        free -m
        df -h

    # Attach Swap File on System Restart:
        sudo nano /etc/fstab
            /swapfile   none    swap    sw    0   0

    # Adjust Swap File Settings:        
        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 File Priority: (0-100% => 0: Don't put to swap,  100: Put on SWAP and free the RAM)
            vm.swappiness=10

            # Remove inode from cache: (100: system removes inode information from the cache too quickly)
            vm.vfs_cache_pressure = 50
 2
Author: Tarik, 2017-08-11 16:38:10

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

Решена с помощью php composer.установка phar

 1
Author: ivan.proskuryakov, 2014-03-19 00:01:46

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

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

 0
Author: Chris, 2014-09-28 21:28:30

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

 0
Author: Aris, 2015-09-17 04:38:00

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

 0
Author: Manjunath A, 2016-02-08 07:36:54

Выполните замену и снова запустите команду 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
Author: nixon1333, 2017-04-23 08:49:06

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

Memory_limit=1 Г

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

 0
Author: Amjith, 2018-07-25 10:54:30