Composer报Permission denied主因是目录属主为root而非当前用户,应先看报错路径锁定问题目录,再用ls -ld检查vendor/、composer.lock及全局缓存目录归属,确认属主是否为$USER,最后用sudo chown -R $USER:$USER修复所有权。

Mac 上 Composer 报 Permission denied,95% 是 ~/.composer 或 vendor/ 归了 root,不是权限数字太小,是“东西不归你”——修 owner 就行,别 chmod -R 777,也别 sudo composer install。
ls -ld 看清谁在拦你
报错末尾一定带路径,比如:file_put_contents(/Users/alex/myapp/vendor/autoload.php): Permission denied → 查 vendor/;Writing cache file ~/.composer/cache/repo/ → 查 ~/.composer/cache。
- 运行
ls -ld vendor/、ls -ld composer.lock、ls -ld $(composer config --global cache-dir) - 重点看输出第二列(owner)和第三列(group):只要不是
$(whoami)(比如显示root root),就是归属错了 - 别只盯权限数字(如
drwxr-xr-x),chmod 777解不了归属问题,反而埋安全隐患
chown -R $USER:$USER 是标准解法
修复目标明确:把目录所有权还给当前用户,不是开放所有权限。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 只修全局配置:
sudo chown -R $USER:$USER ~/.composer,再加固:chmod -R u+rw ~/.composer(防 umask 导致子目录不可写) - 只修缓存路径(如果改过):
sudo chown -R $USER:$USER $(composer config --global cache-dir) - 项目目录出问题(常见于
sudo git clone或sudo composer create-project):sudo chown -R $USER:$USER ./(注意结尾的./) - vendor/ 和 composer.lock 归 root 了?最干净做法是删重来:
rm -rf vendor/ composer.lock,再跑composer install
Mac M1/M2 用户额外踩坑点
报 illegal instruction: 4 或卡在 Resolving dependencies,大概率是 PHP 架构错配,不是 Composer 本身的问题。
- 确认 PHP 是 ARM64 原生版:
which php必须输出/opt/homebrew/bin/php;file $(which php)输出里要有arm64 - 别用
brew install composer—— 官方已弃用,M1/M2 上装了也大概率command not found - 正确安装流程:
curl -sS https://getcomposer.org/installer | php→sudo mv composer.phar /opt/homebrew/bin/composer→sudo chmod +x /opt/homebrew/bin/composer - 国内用户必须切镜像源,否则卡死:
composer config -g repo.packagist composer https://packagist.phpcomposer.com(阿里云镜像)或https://mirrors.aliyun.com/composer/
vendor/bin/* 执行报 Permission denied
这不是目录权限问题,是脚本文件缺 x 执行位。Git 提交或 Windows 打包时容易丢掉可执行属性。
- 临时修复:
chmod -f +x vendor/bin/*(-f忽略无权修改的文件) - 长期预防:确保 Git 配置中
core.filemode为true(Mac/Linux 默认开启,但某些同步工具会覆盖) - 如果
vendor/bin/phpunit运行时报错,先试php vendor/bin/phpunit—— 能跑通说明只是执行位缺失,不是路径或权限问题
真正麻烦的不是权限数字,而是归属链断裂:PHP 进程用户 ≠ Composer 当前用户 ≠ Web 服务器用户。一旦混用 sudo,修复就得层层查 —— ~/.composer、缓存路径、项目目录、vendor/bin,漏一处就卡住。

















