核心问题是缓存写入中断、权限残留与inode耗尽叠加;必须先停进程、再清缓存、最后重置配置,缺一不可。df -i use%≥95%即确认inode耗尽,需kill所有composer进程后执行composer clear-cache,并修复权限及repo.packagist配置。

磁盘写满导致 Composer 配置损坏,核心问题不是文件被“改乱”,而是缓存写入中断 + 权限残留 + inode 耗尽三者叠加;必须先停进程、再清缓存、最后重置配置,跳过任一环节都可能让 composer install 反复失败。
df -i 显示 Use% 接近 100% 就别碰 composer install
报 No space left on device 却发现 df -h 还剩几十 GB?八成是 inode 耗尽。Composer 缓存目录(~/.composer/cache 或 %APPDATA%\Composer\Cache)里数万个小文件——每个 ZIP、每个 Git 子目录、每个哈希前缀都占一个 inode。APFS、Docker、某些云主机尤其敏感。
- Linux/macOS:运行
df -i $(composer config --global cache-dir),重点看输出里Use%是否 ≥95% - Windows:PowerShell 中执行
Get-PSDrive C | Select-Object Used,Free辅助判断磁盘块是否真满,但不能替代 inode 检查 - 若
Use%接近 100%,立刻停所有 composer 进程,否则clear-cache会卡死或删不干净
杀光进程后再跑 composer clear-cache
直接 rm -rf ~/.composer/cache 极危险:IDE 内嵌的 Composer、后台 php composer.phar、残留锁文件,都会导致删一半就中断,甚至损坏缓存索引。必须先清进程,再让 clear-cache 安全收尾。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 查进程:
ps aux | grep composer(Linux/macOS)或tasklist | findstr composer(Windows) - 杀干净:
kill -9 $(pgrep -f "composer")(Linux/macOS),Windows 手动结束对应 PID - 再执行
composer clear-cache—— 它会跳过被占用项、校验权限、只删无效/损坏/过期条目 - 留意输出:若提示
Permission denied,说明部分子目录属主不是当前用户(比如曾用sudo composer),需先修复权限
配置文件没“损坏”,但镜像和缓存已失效
磁盘写满时 Composer 可能中途断在写 config.json 或缓存元数据上,结果就是 repo.packagist 字段错位、缓存快照残留旧镜像地址、或环境变量接管失效。这不是 JSON 语法错误,而是逻辑错配。
- 先确认全局镜像:
composer config -g -l | grep repo.packagist,值不是https://packagist.org就得重设 - 恢复官方源:
composer config -g repo.packagist https://packagist.org(注意字段名是单数repo.packagist,不是repos.packagist) - 强制清缓存:
composer clear-cache是硬性前置步骤,否则旧镜像快照还在,install仍会走错路 - 验证是否生效:
composer require monolog/monolog --no-install -vvv,盯住日志里Downloading https://的 URL 是否指向 packagist.org
vendor 目录重建前必须确认 composer.lock 状态
磁盘写满常伴随 composer.lock 写入中断,造成 JSON 结构破损、哈希字段缺失或换行符错乱。此时直接 rm -rf vendor && composer install 会失败,因为 Composer 拒绝读取损坏的 lock 文件。
- 先验证:
composer validate—— 不联网、不读 vendor,500ms 内就能告诉你 lock 是否合法 - 若报
The lock file is not up to date:说明只是“过期”,跑composer update --lock对齐即可(只更新哈希和大小字段) - 若报 JSON 解析失败:检查是否有 Git 冲突标记、BOM 头、Windows 换行符,可用
head -n 5 composer.lock | cat -A查看不可见字符 - 真损坏且无 Git 历史?删掉
composer.lock,再composer install(前提是 vendor 已清空,否则新版 Composer 会直接报错)
最易被忽略的是缓存路径权限残留和 repo.packagist 字段名拼写错误——前者让 clear-cache 静默跳过关键目录,后者让镜像设置完全失效。这两处不手动验证,重装十次也白搭。










