根本原因是当前用户对目标目录或composer缓存目录(~/.composer/cache)无写入权限,常见于误用sudo导致缓存属主变为root,或项目目录父级缺少w权限。

Composer create-project 报错 “Permission denied”
根本原因通常是当前用户对目标目录没有写入权限,或者 Composer 缓存目录(COMPOSER_HOME)被 root 或其他用户创建过,导致普通用户无法读写。不是网络或 PHP 配置问题,先别急着重装 Composer。
检查并修复项目目标目录权限
运行 create-project 时指定的路径(比如 my-app)如果已存在,且属主不是当前用户,就会直接拒绝写入:
- 用
ls -ld my-app看目录属主和权限,若显示root或其他用户,执行sudo chown -R $USER:$USER my-app - 若目录不存在,但父目录(如
~/projects)权限为dr-xr-xr-x(缺少 w),则mkdir都会失败,需先chmod u+w ~/projects - 避免在
/var/www、/opt等系统目录下直接创建项目,除非你明确用sudo composer create-project(不推荐)
重置 Composer 全局缓存权限
Composer 默认把下载的包缓存在 ~/.composer/cache。如果某次误用 sudo composer,这个目录会被创建为 root 所有,后续普通用户调用就会卡在“Permission denied” —— 错误信息可能不直接提示缓存路径,但现象高度一致:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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确认缓存位置(默认~/.composer/cache) - 执行
ls -ld ~/.composer ~/.composer/cache,若属主是root,运行sudo chown -R $USER:$USER ~/.composer - 清理旧缓存可选:
composer clear-cache(此时应能成功执行)
临时绕过权限问题的最小验证方式
想快速确认是不是权限导致的,用一个完全可控的路径测试:
- 新建空目录:
mkdir /tmp/test-composer && cd /tmp/test-composer - 运行:
composer create-project laravel/laravel .(注意末尾的.) - 如果成功,说明原路径权限有问题;如果仍失败,再查 SELinux(Linux)、Gatekeeper(macOS)或防病毒软件拦截
真正麻烦的往往不是命令本身,而是缓存目录所有权被悄悄改掉后,错误堆栈里根本不提 cache 这个词。










