答案是先根据报错路径定位问题目录,再用ls -ld检查归属,若属主为root则执行sudo chown -r $user:$user修复所有权;禁用sudo composer install和chmod 777。

直接看报错里写的路径——file_put_contents失败在哪,问题就在哪。不是 Composer 有 bug,是操作系统拦住了你往那个目录写文件。
报错里带 vendor/ 或 composer.lock 怎么办
这类错误说明项目根目录下关键路径归属不对。常见现象是执行 composer create-project 后卡在生成 vendor/autoload.php,或提示 mkdir(): Permission denied。
- 立刻检查:
ls -ld vendor/ composer.lock .—— 如果任一输出第三列(属主)不是$(whoami),就是它了 - 别改权限位,改归属:
sudo chown -R $USER:$USER ./(注意结尾的./,只修当前项目) - 如果刚用过
sudo composer create-project,vendor/下可能混着 root 和普通用户文件,rm -rf vendor/再重来比硬修更稳
~/.composer 或 ~/.cache/composer 被 root 占了怎么办
全局缓存目录被污染,会导致所有项目都连带失败,比如 create-project 卡在下载包阶段,报错指向 ~/.composer/cache/repo/https---packagist.org/。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查路径:
composer config --global cache-dir,再ls -ld看归属 - 常见污染源:
sudo composer global require、Docker 容器以 UID 0 挂载宿主机目录 - 修复命令:
sudo chown -R $USER:$USER $(composer config --global cache-dir) - 整个
~/.composer都是 root?直接sudo chown -R $USER:$USER ~/.composer,顺手chmod -R u+rw ~/.composer防 umask 导致子目录无写权
为什么 sudo composer create-project 是个陷阱
它看似能跑通,实则把整个新项目目录树(包括 vendor/、composer.lock)全设为 root 所有,后续你连 git add、php artisan 都可能被拒。
-
sudo只该用于chown这类所有权修复,绝不该用于运行 Composer 命令本身 - 如果你已经用了,别补救,删掉整个新建目录,用普通用户重试
- 安装 Composer 时就该避开坑:用
php composer-setup.php --install-dir=$HOME/bin --filename=composer,确保它从一开始就活在你的用户空间里
最常被忽略的一点:报错路径里出现 /root/.composer 或 /var/www/.composer,说明 COMPOSER_HOME 环境变量已被污染,得先 unset COMPOSER_HOME 或显式指定 COMPOSER_HOME=$HOME/.composer composer create-project 才能绕过。










