PHP Composer更新“无法分配内存”错误(使用Laravel 4)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Composer更新“无法分配内存”错误(使用Laravel 4)相关的知识,希望对你有一定的参考价值。
我只是无法解决这个问题。
我正在使用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
有点旧,但万一有新人正在寻找解决方案,更新您的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
这项工作适用于Centos 6
以下是解决问题的步骤:(使用即时快速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
从缓存中删除inode:(100:系统过快地从缓存中删除inode信息)
vm.vfs_cache_pressure = 50
有时候,通过自我更新的作曲家,它可以解决问题
php composer.phar self-update
干杯
我大部分时间都会遇到这种情况,所以通常我会按照设置交换内存的步骤进行操作。
但现在我发现了一个对我有用的简单替代技巧。
运行composer update --no-dev
除了composer update
我在Vagrant解决了同样的问题。我增加了memory_limit的值并删除了composer cache:sudo rm -R~ / .composer,最后是vagrant reload。
与我的512mb主机上的php composer.phar更新有同样的问题。
解决了php composer.phar安装问题
我在DigitalOcean托管的最便宜的服务器(512MB RAM)上遇到了类似的问题,我也在同一台服务器上运行Jenkins CI。在我停止了Jenkins实例之后,composer install命令工作了(好吧,到了一定程度,它失败了,除了已经安装好了mcrypt扩展!)。
也许如果你在服务器上运行另一个应用程序,也许值得尝试阻止它并重新运行命令。
进行交换并再次运行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
编辑php.ini文件并增加memory_limit值。
memory_limit的= 1G
将解决这个问题。
composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
> mmap()失败:[12]无法分配内存
更新服务器上的内存并要求'4G'更改4GB Ram [尝试更改服务器类型或添加更多内存]
2个文件我们需要编辑
在命令
# cd /var/www/html
# nano .htaccess
并编辑"memory_limit 756M”
到4G
在PHP 7.0上Php这个
# cd ~
# php –-ini
# sudo nano /etc/php-7.0.ini
memory_limit = 128M到4G
#AWS #AMAZONLINUX#MAGENTO2#PHP7.0
看起来你的交换内存耗尽,试试这个
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
正如@ BlackBurn027在下面的评论中所提到的,这个解决方案在here中有所描述
我尝试删除vendor文件夹和composer.lock文件然后运行命令composer clear-cache
然后运行composer install
。所以它没有任何错误。
我将PHP memory_limit
从默认的128M增加到512M并重启服务器。这解决了这个问题。
我遇到了同样的问题。我在AWS Free Microinstance上,内存较少。我总是尝试以下选项之一,它始终有效(在此之前请检查您是否安装了最新版本的composer)
sudo php -dmemory_limit=750M composer.phar update
或删除vendor文件夹的内容并尝试编辑器更新。
sudo rm -rf vendor
sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist
sudo php artisan --dump-autoload
第二个选项尝试更新所有组件,如果没有更新,它会从缓存中获取包,否则从dist中获取
注意:请根据您的选择更改内存限制。
要么
创建一个交换分区并尝试。交换分区是Linux在物理内存耗尽时用作虚拟内存的硬盘驱动器的一部分。它与Windows交换文件类似,而不是使用实际文件,Linux使用硬盘驱动器上的分区。
希望这可以帮助
作为作曲家故障排除指南here这可能会发生,因为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
轻松,输入以下命令:
rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist
应该适用于低内存机器
我对流浪者有同样的问题。我通过分配更多内存来修复它。
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
试试看:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
以下是我发现每次都适合我的解决方法:
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
对于1GB和更小的服务器实例,这似乎是一个反复出现的问题。除了尝试关闭进程和调整交换设置外,您还可以在本地计算机上安装并上传。
以上是关于PHP Composer更新“无法分配内存”错误(使用Laravel 4)的主要内容,如果未能解决你的问题,请参考以下文章
错误 PHP - 无法分配内存(laravel + aws)
使用 Alpine 的 apk 命令安装 composer 时使用了错误的 PHP 版本
参考 - 升级 PHP 后 Composer 错误“您的 PHP 版本不满足要求”
Composer 致命错误:声明 Fxp... 必须与第 334 行的 ...AbstractAssetsRepository.php 兼容