free -m 显示 Swap total 为 0 表明系统未启用交换空间,需立即通过 dd 创建交换文件、chmod 600 设置权限、mkswap 格式化、swapon 启用四步操作临时扩容,配合 php -d memory_limit=-1 运行 Composer,完成后务必 swapoff 并删除文件以避免 I/O 性能下降。

free -m 显示 Swap 为 0 就得加
执行 free -m 后,如果 Swap 行的 total 是 0,说明系统没启用交换空间——这不是 Composer 配置问题,是 Linux 系统级资源缺失。1GB 或更低内存的云服务器(比如 DigitalOcean $5 套餐、阿里云入门型 ECS)默认都不配 Swap,但 Composer install 或 update 在解析依赖树、解压 ZIP、生成 autoload 时会瞬间吃掉 800MB+ 内存,没 Swap 就会被内核 OOM killer 直接 killed。
dd + mkswap + swapon 三步必须连做
别跳步,顺序错了会报 swapon: swapfile: swapon 失败: 设备或资源忙 或权限错误。关键操作如下:
-
dd if=/dev/zero of=/var/swapfile bs=1M count=2048—— 创建 2GB 交换文件(count=2048对应 2GB;1GB 项目够用,Laravel + dev-dependencies 建议 2GB 起) -
chmod 600 /var/swapfile—— 必须设为600,否则swapon拒绝加载(提示insecure permissions 0644) -
mkswap /var/swapfile→swapon /var/swapfile—— 先格式化再启用;若报设备或资源忙,先运行swapoff /var/swapfile再重试
swapoff /var/swapfile 之后才能删文件
临时加 Swap 是为了跑过 Composer,不是永久方案。用完记得清理:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确认 Composer 已成功执行完(
composer install或update无报错退出) - 运行
swapoff /var/swapfile关闭交换区(不关直接rm会失败) - 再执行
rm /var/swapfile删除文件 - 如果之前写进了
/etc/fstab,顺手删掉对应行,避免重启后自动挂载拖慢 IO
硬盘比内存慢两个数量级,Swap 文件长期挂着会让 composer dump-autoload、php artisan optimize 这类磁盘密集型操作明显变卡——它只是急救绳,不是登山杖。
PHP memory_limit=-1 和 Swap 要配合着用
只开 Swap 不调 PHP 内存限制,照样会卡在 Allowed memory size exhausted。必须加 php -d memory_limit=-1 前缀:
php -d memory_limit=-1 composer installphp -d memory_limit=-1 composer update
注意:不要改 php.ini 全局设 memory_limit = -1,CI/CD 或其他 CLI 工具可能因此异常;也别信某些教程让改 COMPOSER_MEMORY_LIMIT,这个环境变量在新版 Composer 中已废弃,无效。

















