执行 composer 抛出 Killed的解决办法

1. 问题描述

有时,在使用 composer 安装、更新或删除依赖项时,可能会遇到以下错误信息:

Killed...  

这通常发生在需要大量内存的操作(例如安装某些复杂的依赖项)时。

2. 问题原因

发生错误的原因是机器的内存不足,导致系统强制关闭了程序,从而使得执行 composer 命令无法完成。

3. 解决方法

要解决这个问题,需要增加计算机的内存或在执行 composer 命令时,为它分配更多的内存。以下是可以尝试的一些方法:

3.1. 增加机器的内存

增加机器的内存是解决这个问题的最可靠的方法。如果机器的内存不足,建议增加内存到 8GB 或更高。建议使用 Chrome DevTools 的 Memory 进行调试,或者使用 top 命令检查系统使用情况。

3.2. 命令行参数增加内存限制

可以在执行 composer 命令时,使用命令行参数调整内存限制。例如,以下命令将内存限制提高到了 4GB:

php -d memory_limit=4G /usr/local/bin/composer update

这是将内存限制改为 4GB 的例子,可以根据实际需要更改内存限制的大小。

3.3. 通过 Composer 配置修改内存限制

Composer 也提供了一种更方便的方式来调整内存限制。可以通过在 composer.json 文件中添加以下配置来设置内存限制:

{

"config": {

"platform": {

"php": "7.2.10"

},

"process-timeout": 6000,

"sort-packages": true,

"optimize-autoloader": true,

"prefer-stable": true,

"minimum-stability": "dev",

"discard-changes": true,

"platform-check": false,

"prefer-dist": true,

"github-oauth": {

"github.com": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

},

"bin-dir": "~/bin",

"data-dir": "/tmp",

"home": "~/.composer",

""process-timeout": 6000,

"locked-timeout": 6000,

"memory-limit": "2G"

},

"repositories": [

{

"type": "composer",

"url": "https://packagist.org"

}

],

"require": {

"php": "^7.2.10",

"laravel/framework": "^6.0",

"doctrine/dbal": "^2.8",

"illuminate/support": "^6.2",

"phpoffice/phpspreadsheet": "^1.12",

"league/flysystem-bundle": "^1.0",

"league/flysystem-aws-s3-v3": "^1.0",

"league/flysystem-cached-adapter": "^1.0",

"symfony/filesystem": "^4.2"

},

"require-dev": {

"fzaninotto/faker": "^1.7",

"phpunit/phpunit": "^8.0|^9.0"

},

"autoload": {

"psr-4": {

"App\\": "app/"

}

},

"suggested": {

"laravel/tinker": "^2.0"

},

"scripts": {

"post-autoload-dump": [

"@php artisan package:discover --ansi"

],

"post-root-package-install": [

"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""

],

"post-create-project-cmd": [

"@php artisan key:generate --ansi"

]

},

"minimum-stability": "dev"

}

其中,"memory-limit" 配置选项指定了可以使用的内存量,可以设置这个值来调整内存限制的大小。

3.4 在 Vagrant 或 Docker 中使用更多内存

如果在 Vagrant 或 Docker 中运行的虚拟环境中发生了问题,则可以尝试调整虚拟机的配置以增加可用内存。例如,在 Vagrantfile 中添加以下行来提高可用内存:

v.memory_size = 4096

这将分配 4GB 的内存给虚拟机。

3.5 在 Windows 中增加可用内存

在 Windows 上,还可以通过配置中更改虚拟内存设置来增加可用内存。这是通过以下步骤完成的:

- 打开“我的电脑”。

- 单击右键,选择“属性”。

- 选择“高级系统设置”。

- 在“性能”部分中选择“设置”。

- 选择“高级”选项卡。

- 单击“更改”。

- 选择“自定义大小”选项。

- 输入所需的值,并单击“设置”。

- 将“初始大小”和“最大大小”设置为相同的值。

- 单击“确定”。

4. 结论

在使用 Composer 时,可能会遇到由于机器内存不足而导致的错误。要解决这个问题,可以使用上述方法之一来增加可用内存或在执行 Composer 命令时为其指定更多的内存。这将确保 Composer 在执行期间不会被强制关闭,从而允许您顺利完成相应的操作。