Laravel唯一可靠安装方式是composer create-project laravel/laravel myapp,因laravel/installer已被官方弃用,存在版本滞后、代理失败、故障难定位等问题;必须指定版本号加引号如"11.*",并执行key:generate和配置.env。

直接用 composer create-project 就行,别碰 laravel/installer —— 官方已不推荐,出问题难定位,版本控制也不灵活。
为什么 create-project 是唯一靠谱的选择
它直接从 laravel/laravel 包拉取预构建骨架,跳过 Git 克隆、手动 composer install 等冗余步骤。而 laravel new 本质是调用 create-project 的封装,多一层就多一个故障点(比如全局 bin 路径没配对、installer 版本滞后)。
-
laravel/installer默认只拉最新稳定版,无法指定"10.*"或"11.*",CI/生产环境必须规避 - 某些 CI 环境禁止写全局 PATH,
laravel new直接失效 - 报错堆栈会绕过真实依赖解析层,比如看到
Class not found却查不到是哪个扩展没启用
create-project 命令必须带的三个参数
漏掉任意一个都可能静默失败或装错版本:
- 包名固定为
laravel/laravel(不是laravel/framework) - 项目目录名不能已存在,否则命令直接退出(不会覆盖)
- 版本号必须用引号包裹:
"11.*"或"^11.0";写成11.*会被 shell 当通配符展开,大概率匹配到当前目录文件,而不是 Packagist 上的 tag
完整命令示例:composer create-project laravel/laravel blog "11.*" --prefer-dist
--prefer-dist 强制走压缩包安装,比 Git clone 快得多,尤其在国内网络环境下几乎是必选项。
装完进目录却报 require(): Failed opening required 'vendor/autoload.php'
这不是 Laravel 的问题,是 Composer 没跑完依赖安装流程。常见于:
- 执行命令时加了
--no-install(某些脚本模板会默认带上) - 网络超时导致
composer install中断,但create-project命令本身已返回成功 - WSL 或 Docker 挂载卷里 symlink 权限受限,
vendor目录生成不全
立刻验证:ls -l vendor/autoload.php。如果不存在,进项目根目录手动补装:composer install --no-interaction。别用 composer update 替代——它读的是 composer.lock,而新项目还没生成这个文件。
装完还不能访问?三件事必须手动做
Composer 只管代码和依赖,Laravel 运行态配置得自己填:
- 运行
php artisan key:generate,否则 session 加密、CSRF token 全崩 - 复制
.env.example为.env,至少改DB_DATABASE和DB_USERNAME(SQLite 用户注意database/database.sqlite文件要存在且可写) - 确保
storage和bootstrap/cache可写:chmod -R 775 storage bootstrap/cache(Linux/macOS);Windows 下需确认 Web 服务器进程有对应目录写权限
漏掉其中任意一项,php artisan serve 能启动,但一访问路由就 500,错误日志里往往只显示“无法加载类”,根本看不出是权限或密钥问题。











