Обновление 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
Ответы
Ответ 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
решит эту проблему.