Composer 是 PHP 依赖管理工具,与 Laravel 无关;需先安装 Composer,再用 composer create-project laravel/laravel myapp 创建项目,不可手动复制或 clone 源码。

Composer 不是 Laravel 的一部分,别装错地方
Composer 是 PHP 的依赖管理工具,和 Laravel 没有捆绑关系。你不需要“安装 Composer_Laravel”,而是先装好 composer,再用它来创建或管理 Laravel 项目。很多人卡在第一步,是因为误以为 Laravel 自带 Composer 或需要特殊版本。
常见错误现象:command not found: composer,或者运行 laravel new project 报错说找不到 laravel 命令 —— 这说明本地根本没装 composer,更别说 laravel/installer。
- 从 getcomposer.org 下载官方安装脚本,用
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"方式也行,但别跳过校验步骤 - 装完立刻验证:
composer --version,必须看到版本号才继续 -
laravel/installer是可选全局工具,不是必需:用composer global require laravel/installer安装后,laravel new myapp才能用;否则直接用composer create-project laravel/laravel myapp
用 create-project 初始化 Laravel 项目最稳
新手最容易踩的坑是用 git clone 拉 Laravel 源码、或者手动复制文件——这会导致 vendor/ 缺失、自动加载失效、甚至 composer install 失败。Laravel 必须通过 Composer 构建依赖树,不能绕过。
正确做法只有一条主路径:composer create-project laravel/laravel myapp。它会自动拉取最新稳定版(如 11.x),并执行 composer install。
- 想指定版本?加
@x.y后缀:composer create-project laravel/laravel myapp "10.*"(注意引号包裹版本约束) - 国内慢?提前配好镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com,或改用阿里云源https://mirrors.aliyun.com/composer/ - 如果提示
zlib_decode(): data error,大概率是网络中断导致压缩包损坏,删掉~/.composer/cache/重试
composer require 添加扩展包时要注意 autoload 和服务提供者
大多数 Laravel 扩展包(比如 spatie/laravel-permission)装上就能用,但前提是它们遵循 Laravel 的自动发现机制(extra.laravel.dont-discover 未禁用)。不是所有包都支持,尤其老版本或自研包。
典型问题:composer require foo/bar 成功,但调用 Foo\Bar::do() 时抛出 Class not found —— 很可能因为命名空间没注册进 autoload,或服务提供者没被加载。
- 检查
composer.json的autoload段是否包含该包的 PSR-4 映射;若没有,需手动加或运行composer dump-autoload - Laravel 5.5+ 默认启用包自动发现,但如果包的
composer.json里没写"extra": {"laravel": {"dont-discover": false}},就可能被跳过 - 遇到不自动注册的包(比如某些私有包),得手动在
config/app.php的providers数组里加服务提供者类名
composer update 升级依赖前必须看 composer.lock 和兼容性
很多人在生产环境直接跑 composer update,结果 CI 构建失败、API 返回 500、队列崩溃——因为 update 会无视 composer.lock,升级所有满足约束的包,包括 Laravel 自身的小版本(如从 10.32 升到 10.44),而这些小版本可能引入不兼容变更(比如废弃某个 Facade、修改中间件参数顺序)。
真正安全的做法是:开发阶段用 composer update vendor/package-name 精确升级单个包;上线前只用 composer install(读 composer.lock)保证环境一致。
- 升级 Laravel 主版本(如 9 → 10)必须查官方升级指南,不能只靠
composer update -
composer outdated可以列出所有待更新包,加--direct只看显式 require 的包,避免被间接依赖干扰判断 - CI 流水线里务必用
composer install --no-dev(生产环境)或--with-all-dependencies(确保 dev 依赖也被锁死)
最常被忽略的一点:Laravel 的 composer.json 里 minimum-stability 默认是 stable,但如果你手动改过,又忘了同步到团队,就可能出现本地能装、CI 报 could not find package 的情况。


















