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 在执行期间不会被强制关闭,从而允许您顺利完成相应的操作。