Я просто не могу решить эту проблему.
Я нахожусь в основном плане 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
Немного старый, но на случай, если кто-то новый ищет решение, обновление вашей версии 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
Примечание. Пожалуйста, измените ограничение на память по вашему выбору.
или
Создайте раздел swap и попробуйте. Раздел подкачки - это часть жесткого диска, который linux использует как виртуальную память, когда заканчивается физическая память. Он похож на файл свопинга Windows, вместо использования фактического файла, вместо этого linux использует раздел на жестком диске.
Надеюсь, что это поможет
Как руководство по устранению неполадок композитора здесь Это может произойти, потому что 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
У меня была такая же проблема с бродягой. Я исправил его, выделив больше памяти.
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
vb.customize ...
2.x вместо vb.customize ...
вы можете сделать vb.memory = 1024
.
Просто введите следующие команды:
rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist
Должен работать на машинах с низкой памятью
Вот обходной путь, который я нашел, который работает для меня каждый раз:
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
Попробуй это:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
Кажется, это повторяющаяся проблема с 1 ГБ и меньшими экземплярами сервера. Помимо попыток отключить процессы и настроить параметры подкачки, вы можете установить их на локальный компьютер и загрузить.
Попробуйте следующее:
/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 self-update
Приветствия
composer self-update
, если кто-то, не знакомый с композитором, должен прочитать этот ответ.
Вот шаги для решения проблемы: (используется метод быстрого и быстрого выделения файлов 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
Я решил ту же проблему в Vagrant. Я увеличил значение memory_limit и удалить кеш композитора: sudo rm -R ~/.composer и, наконец, бродячая перезагрузка.
Я попадаю в эту ситуацию большую часть времени, поэтому обычно я использовал шаг настройки памяти подкачки.
Но теперь я нашел простой альтернативный трюк, который работал у меня.
Run composer update --no-dev
Кроме composer update
имеют такую же проблему с обновлением php composer.phar на моем хосте в 512 Мб.
решена с помощью php composer.phar install
отредактируйте файл php.ini и увеличьте значение memory_limit.
memory_limit = 1G
решит эту проблему.
Сделайте команду свопа и запустите команду композитора. Надеюсь, это сработает для вас.
$ 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
Я попытался просто удалить папку поставщика и файл composer.lock, а затем запустил команду "composer clear-cache", а затем установил композитор. Поэтому он работает без ошибок.
Я увеличил PHP memory_limit с 128M по умолчанию до 512M и перезапустил сервер. Это решило проблему.
У меня была аналогичная проблема на самом дешевом сервере (512 МБ ОЗУ), размещенном DigitalOcean, и я был также запущен Jenkins CI на том же сервере. После того, как я остановил экземпляр Jenkins, команда установки компоновщика работала (ну, в какой-то момент, она не удалась с расширением mcrypt, отсутствующим помимо уже установленного!).
Возможно, если у вас есть другое приложение, работающее на сервере, возможно, стоит попытаться остановить его и повторно запустить команду.