运行 composer create-project 权限问题源于目录所有权或写入权限不足,需用 sudo chown -R $USER:$USER ./ 修正当前目录归属,避免使用 sudo 运行命令,并推荐在用户家目录新建项目目录以确保权限清晰。

运行 composer create-project 时出现权限问题,通常是因为目标目录(比如当前文件夹)的所属用户和执行命令的用户不一致,或者目录本身没有写入权限。核心不是 Composer 本身出错,而是系统级的文件所有权或权限限制导致它无法创建、重命名或写入文件。
检查并修正目标目录的所有权
Composer 默认会在当前目录下新建项目文件夹(如 laravel/laravel),如果当前目录属于 root 或其他用户(例如通过 sudo 创建过),而你现在用普通用户运行命令,就会失败。
- 先确认当前目录归属:
ls -ld . - 若显示类似
drwxr-xr-x 5 root root ... .,说明目录归 root 所有 - 把目录所有权改回当前用户:
sudo chown -R $USER:$USER ./(注意末尾的./表示当前目录) - 再试一次
composer create-project
避免使用 sudo 运行 Composer
很多人习惯加 sudo 来“绕过”权限问题,但这会让生成的整个项目归 root 所有,后续运行 php artisan、修改配置、甚至 Git 提交都可能再次报错。
- 永远不要用
sudo composer create-project - 如果之前误用了,先清理残留:
sudo rm -rf vendor/ composer.lock,再按上一步改所有权 - 确保你的
~/.composer目录也归你所有:ls -ld ~/.composer→ 若非当前用户,执行sudo chown -R $USER:$USER ~/.composer
指定一个干净、可写的项目路径
与其在权限混乱的目录里硬刚,不如换到明确可控的位置,比如家目录下的新文件夹:
- 新建专属目录:
mkdir -p ~/my-projects - 进入并确认权限:
cd ~/my-projects && ls -ld .(正常应显示你的用户名) - 直接运行:
composer create-project laravel/laravel my-app - 这样从一开始所有文件就归你所有,无后顾之忧
基本上就这些。关键是让 Composer 在一个它能自由读写、且归属清晰的环境里工作——不是修 Composer,而是理清 Linux 文件所有权逻辑。










