作曲家在更新时被杀死

use*_*158 81 php laravel composer-php laravel-4

我遇到了问题,我试图在我的laravel 4项目中安装一个新包.但是当我跑步时,php composer.phar update我得到了这个:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed
Run Code Online (Sandbox Code Playgroud)

我在互联网上找了问题,看到内存是问题,我想我没有足够的RAM可用,我已经检查了这个我有大约411mb免费.作曲家真的需要更多的内存吗?有谁可以帮助我吗?

谢谢

And*_*eas 215

"被杀"消息通常意味着您的进程消耗了太多内存,因此您可能只需要为系统添加更多内存(如果可能).在撰写此答案时,我不得不将虚拟机的内存增加到至少768MB,以便composer update在某些情况下开始工作.

但是,如果您在实时服务器上执行此操作,则根本不应该使用它composer update.你应该做的是:

  1. 运行composer update在本地环境(无论是本地物理机或虚拟开发机)
  2. 上传或git pushcomposer.lock文件
  3. composer install在实时服务器上运行

composer install然后将从.lock文件中读取,每次都获取完全相同的版本,而不是查找每个包的最新版本.这使您的应用程序不太可能破坏,并且作曲家使用更少的内存.

在这里阅读更多内容:https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

  • 当我上传composer.lock并运行composer install work.谢谢! (3认同)
  • 我在本地机器上遇到了这个问题。 (2认同)

Bal*_*our 46

如果像我一样,你正在使用一些缺少内存的微型虚拟机,那么创建交换文件就可以了:

free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m
Run Code Online (Sandbox Code Playgroud)

顺便说一下,随意选择文件的其他位置/文件名/大小.
/var可能不是最好的地方,但我不知道哪个地方会,并且很少关心,因为小型服务器主要用于测试目的.

  • 不要忘了`sudo`-我必须使用root特权来运行这些命令。 (2认同)

Hem*_*ini 19

不需要额外内存的 DigitalOcean 修复 - 激活交换,这是 1gb 的示例:

在终端运行下面

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
Run Code Online (Sandbox Code Playgroud)

上述解决方案将在下一次重新启动之前有效,之后必须重新激活交换。要在两次重启之间保留它,请将交换文件添加到 fstab:

sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)

打开上面的文件将下面的行添加到文件中

/var/swap.1 swap swap sw 0 0
Run Code Online (Sandbox Code Playgroud)

现在重新启动服务器。作曲家需要工作正常。


ali*_*obe 13

不幸的是,作曲家需要大量的RAM和处理能力.以下是我所做的一些事情,这些事情相结合,使这个过程变得可以忍受.这是我的云围栏env.

  1. 您可能只是耗尽了RAM.启用交换:https://www.digitalocean.com/community/search?query=how+to+add+ swap (注意:我认为最佳做法是添加一个单独的分区.Digitalocean的指南适用于他们的环境)
  2. service mysql stop (杀死你的DB/mem-hog服务以释放一些RAM - 不要忘记再次启动它!)
  3. 使用运行的辅助终端会话top来监视内存/交换消耗,直到进程完成.
  4. composer.phar update --prefer-dist -vvv(详细输出[在工作时仍然在某些点挂起]并使用distro zip文件).也许试一试--dry-run
  5. 很明显,Composer在旧版本的PHP中运行速度较慢(例如5.3x).对我来说,5.5.9仍然很慢......


小智 11

运行composer self-updatecomposer clearcache 删除 vendor 和 composer.lock 重新启动本地环境,然后运行 php -d memory_limit=-1 /usr/local/bin/composer install


小智 11

当我composer install在 PHP DOCKER 容器中运行时出现此错误,这是一个内存问题。通过将 DOCKER PREFERENCES 中的 SWAP 内存从 512MB 增加到 1.5GB 来解决

要做到这一点:

Docker -> 首选项 -> Rousources

在此处输入图片说明


Gio*_*osK 7

增加作曲家的内存限制

php -d memory_limit=4G /usr/local/bin/composer update
Run Code Online (Sandbox Code Playgroud)


max*_*ver 5

如果您使用的是 docker,则可以使用COMPOSER_PROCESS_TIMEOUT

environment:
  COMPOSER_MEMORY_LIMIT: -1
  COMPOSER_PROCESS_TIMEOUT: 2000 #seconds
Run Code Online (Sandbox Code Playgroud)

此外,在大型项目中需要超过 2GB 的 RAM,您可以在运行时composer检查。ps -aux您必须在 docker options 中手动添加它,其他任何方法都无济于事。

在此输入图像描述