我就是解决不了这个问题。
我正在使用Linode 1G RAM的基本计划。试图通过Composer安装一个包,但它不允许我。我的内存限制在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]: ComposerUtilErrorHandler::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): SymfonyComponentConsoleApplication->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): SymfonyComponentConsoleApplication->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): SymfonyComponentConsoleApplication->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]: ComposerUtilErrorHandler::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): SymfonyComponentConsoleApplication->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): SymfonyComponentConsoleApplication->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): SymfonyComponentConsoleApplication->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975
看起来交换内存用完了,试试这个
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
正如@BlackBurn027在下面的评论中所提到的,这个解决方案在这里的
中进行了描述发生这种情况的原因可能是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
或者如果上面没有工作,那么你可以尝试创建一个交换文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
有点旧,但如果有新人正在寻找解决方案,更新您的PHP版本可以解决这个问题。
此外,您应该提交composer.lock文件,并在资源密集度较低的生产环境中安装composer。
更多详细信息请点击此处:https://github.com/composer/composer/issues/1898#issuecomment-23453850
我也遇到过同样的问题。我使用的是内存较少的AWS Free Microinstance。我总是尝试以下选项之一,它总是有效(在此之前,请检查您是否安装了最新版本的composer)
sudo php -dmemory_limit=750M composer.phar update
或者删除供应商文件夹的内容,然后尝试composer更新。
sudo rm -rf vendor
sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist
sudo php artisan --dump-autoload
第二个选项尝试更新所有组件,如果没有更新,它会从缓存中提取包,否则会从dist 中提取
注意:请根据您的选择更改内存限制
或
创建交换分区并尝试。交换分区是linux在物理内存耗尽时用作虚拟内存的硬盘驱动器部分。它类似于windows交换文件,而不是使用实际的文件,而是使用硬盘上的分区。
希望这能帮助
简单,键入以下命令:
rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist
应该适用于内存不足的机器
以下是解决问题的步骤:(使用即时快速SWAP文件分配方法)
服务器SWAP设置(Ubuntu 16.04 SWAP修复内存不足错误)
检查您是否已经交换,内存和磁盘大小:
sudo swapon -s
free -m
df -h
制作交换文件:(如果您想要4GB swap内存,请将1G更改为4G)
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并释放RAM)
vm.swappiness=10
从缓存中删除索引节点:(100:系统从缓存中快速删除索引节点信息)
vm.vfs_cache_pressure = 50
我在流浪汉问题上也遇到过同样的问题。我通过积累更多的记忆来修复它。
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
以下是我发现的每次都适用的解决方法:
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
我尝试删除供应商文件夹和composer.lock文件,然后运行命令composer clear-cache
和composer install
。所以它工作时没有任何错误。
您可以使用以下方法检查您的空闲(交换)内存
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
这似乎是1GB及以下服务器实例中反复出现的问题。除了尝试关闭进程和调整交换设置外,您还可以在本地机器上安装并上传。
有时通过自我更新composer可以解决问题
php composer.phar self-update
干杯
我将PHP memory_limit
从默认的128M增加到512M
我大多数时候都会遇到这种情况,所以通常我会按照设置交换内存的步骤进行。
但现在我发现了一个简单的替代技巧,它对我有效
Runcomposer update --no-dev
除了composer update
我在Vagrant中解决了同样的问题。我增加了memory_limit的值并删除composer缓存: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 上的工作
进行交换并再次运行composer命令。我希望它对你有用。
$ 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
在我的案例中,我尝试了上面列出的所有内容。我使用的是Laravel和Vagrant,有4GB的内存和交换,内存限制设置为-1。我删除了供应商/并尝试了其他PHP版本。最后,我通过运行使其工作
vagrant halt
vagrant up
然后composer install又像往常一样工作了。
在我的512mb主机上更新php composer.phar时也有同样的问题。
使用php composer.phar install
解决了问题。我在wsl2中使用composer时也遇到了同样的问题。
Microsoft WSL团队引入了一个名为.wslconfig的文件,用于调整WSL2设置。
基本上,您必须在%UserProfile%.wslconfig中创建该文件,并设置以下设置。
[wsl2]
memory=6GB # Any size you feel like
swap=30GB
localhostForwarding=true
重新启动您的计算机,从现在起,您将不会遇到内存消耗过高的问题。
希望它能有所帮助!
在我的案例中,当Laravel版本7,8和composer版本1时,出现了这个错误。我将Composer的版本更新为2,它得到了解决。
composer self-update
或
composer self-update --2
返回到以前的版本:
composer self-update --rollback
我在DigitalOcean托管的最便宜的服务器(512MB RAM)上遇到了类似的问题,而且我也在同一台服务器上运行Jenkins CI。在我停止Jenkins实例后,composer install命令起了作用(好吧,在某种程度上,它失败了,除了已经安装之外,还缺少mcrypt扩展!)。
如果你在服务器上运行了另一个应用程序,也许值得尝试停止它并重新运行该命令。
编辑php.ini文件并增加memory_limit值。
memory_limit=1G
将解决这个问题。
composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
>mmap()失败:[12]无法分配内存
更新服务器上的内存并要求"4G"更改4GB内存[尝试更改服务器类型或添加更多内存]
2个文件我们需要编辑
命令
# cd /var/www/html
# nano .htaccess
并将"memory_limit 756M”
编辑为4G
Php 7.0 上的Php ini
# cd ~
# php –-ini
# sudo nano /etc/php-7.0.ini
memory_limit=128M到4G
#AWS#AMAZONLINUX#MAGENTO2#PHP7.0
我将其用于500MB RAM,它对我有效。
php -d memory_limit=-1 /usr/local/bin/composer install
这对我有效:
根据composer的文档,composer 1使用了更多的内存,升级到最新版本会给你带来更好更快的结果。
https://getcomposer.org/doc/articles/troubleshooting.md#memory-限制错误
请禁用js绑定并增加内存。这应该可以解决问题。我通过禁用js绑定来解决我的问题。
感谢