PHP Composer更新“无法分配内存”错误(使用Laravel 4)

我无法解决这个问题。

我在Linode 1G RAM基本计划。 试图通过composer php安装一个包,它不让我。 我的内存限制在PHP.ini上设置为“-1”

还有什么我可以做到这一点安装?

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 

有点旧,但以防万一有人正在寻找解决scheme,更新您的PHP版本可以解决这个问题。

你也应该提交你的composer.lock文件,并在资源密集度较低的生产环境中进行composer php安装。

更多细节在这里: 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在下面的评论中提到的,这个解决scheme在这里描述

我面临同样的问题。 我正在使用AWS Free Microinstance,其内存较less。 我总是尝试以下选项之一,并始终工作(在这之前,请检查是否安装了最新版本的composer php)

 sudo php -dmemory_limit=750M composer.phar update 

或删除供应商文件夹的内容,并尝试composer php更新。

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

第二个选项尝试更新所有组件,如果没有更新,它会从caching中拾取包,然后从远端拾取

注意:请根据您的select更改内存限制。

要么

创build一个交换分区,然后尝试。 交换分区是linux在物理内存不足时用作虚拟内存的硬盘部分。 它与Windows交换文件类似,而不是使用实际文件,而是使用硬盘上的分区。

希望这可以帮助

我有同样的问题,我通过使用以下解决了问题

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

来源: 内存限制错误#

我对stream浪汉有同样的问题。 我修复了更多的内存。

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

很简单,input这个命令:

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

应该适用于低内存机器

这似乎是1GB和更小的服务器实例反复出现的问题。 除了尝试closures进程和调整交换设置之外,还可以在本地计算机上安装并上传。

以下是我发现每次都适合我的解决方法:

 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

我在Vagrant解决了同样的问题。 我增加了memory_limit的值,并删除composer phpcaching: sudo rm -R〜/ .composer最后stream浪者重新加载。

尝试这个:

 /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上为我工作

与我的512MB主机上的php composer.phar更新有相同的问题。

php composer.phar安装解决

有时通过自我更新的composer php解决了这个问题

 php composer.phar self-update 

干杯

我在DigitalOcean上托pipe的最便宜的服务器(512MB RAM)上也遇到过类似的问题,我也在同一台服务器上运行Jenkins CI。 在我停止Jenkins实例之后,composer install命令起作用了(好吧,到了一定程度,mcrypt扩展失败,除了已经安装!)。

也许如果你有另一个应用程序在服务器上运行,也许它值得试图阻止它,并重新运行命令。

我将PHP memory_limit从默认的128M增加到512M,然后重新启动服务器。 这解决了这个问题。

我尝试删除供应商文件夹和composer.lock文件,然后运行命令“composer php清除caching”,然后composer php安装。 所以它工作没有任何错误。

进行交换并再次运行composer php命令。 我希望它能为你工作。

  $ 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