Подтвердить что ты не робот

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

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

Как руководство по устранению неполадок композитора здесь Это может произойти, потому что 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

Я столкнулся с той же проблемой. Я нахожусь на бесплатном 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

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

или

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

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

Ответ 5

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

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

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

Ответ 6

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

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

Ответ 7

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

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

/sbin/mkswap /var/swap.1

/sbin/swapon /var/swap.1

Ответ 8

Вот шаги для решения проблемы: (используется метод быстрого и быстрого выделения файлов 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

Ответ 9

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

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

Ответ 10

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

Ответ 11

Попробуйте следующее:

/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

Ответ 12

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

php composer.phar self-update

Приветствия

Ответ 13

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

Ответ 14

Пытаться

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

Ответ 15

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

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

Run   composer update --no-dev Кроме composer update

Ответ 16

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

Ответ 17

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

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

Ответ 18

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

Ответ 19

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

 $ 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

Ответ 20

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

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

Ответ 21

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

Ответ 22

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

free -m

total used free shared buffers cached

Mem: 2048 357 1690 0 0 237
-/+ buffers/cache: 119 1928
Swap: 0 0 0

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

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

Ответ 23

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

memory_limit = 1G

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