Обновление 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 

Solutions Collecting From Web of "Обновление PHP Composer «не может выделить память» (с использованием Laravel 4)"

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

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

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

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

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

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

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

 sudo php -dmemory_limit=750M composer.phar update 

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

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

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

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

или

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

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

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

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

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

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

Должен работать на машинах с низкой памятью

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

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

 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 

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

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

Запустить composer update --no-dev За исключением composer update --no-dev composer update

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

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

 /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

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

с помощью php composer.phar install

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

 php composer.phar self-update 

ура

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

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

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

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

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

  $ 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 

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

 ### 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