用 composer create-project 安装 Laravel 最稳定,因 laravel new 依赖滞后的 installer 且易在代理环境失败;需提前配置 PHP ≥ 8.2 及 mbstring 等扩展;指定版本用 "10.*" 等约束;安装后必须执行 key:generate 并检查 .env。

用 composer create-project 装 Laravel 是最稳的方式,其他方法要么慢、要么容易卡在权限或 PHP 扩展上。
为什么不用 laravel new?
它底层还是调用 composer create-project,但会额外拉取 laravel/installer 并缓存。问题在于:laravel/installer 版本可能滞后,新项目默认用旧版 Laravel;某些内网或代理环境会卡在全局安装这步,错误信息常是 Could not find package laravel/installer 或 Permission denied。
- 本地开发建议直接走 Composer,可控性强
- CI/CD 流水线里更推荐显式指定 Laravel 版本,避免隐式升级导致行为变化
-
laravel new myapp本质等价于composer create-project laravel/laravel myapp,没省多少事
PHP 和扩展必须提前配好
Laravel 11 要求 PHP ≥ 8.2,且必须启用 mbstring、openssl、pdo、tokenizer、xml、ctype、json 这几个扩展。漏一个,composer install 就会报 Class 'Mbstring' not found 或直接中断。
- Mac 用户用 Homebrew 装 PHP,记得运行
brew services start php启动服务后再验证php -v和php -m | grep mbstring - Windows WSL 用户别用 Windows 自带的 PHP,优先用
apt install php8.2-cli php8.2-mbstring ... - Docker 环境下,基础镜像选
php:8.2-cli比php:8.2-apache更轻量,装完再docker-php-ext-install mbstring pdo
装的时候怎么指定版本?
不加参数默认装最新稳定版(比如现在是 Laravel 11.x),但线上项目往往要锁版本。Laravel 官方包名是 laravel/laravel,不是 laravel/framework —— 后者只是核心库,不能直接跑起来。
- 装 Laravel 10:
composer create-project laravel/laravel myapp "10.*" - 装 Laravel 11 最小化版(无前端脚手架):
composer create-project laravel/laravel myapp --prefer-dist --no-scripts - 如果网络慢,加
-vvv看卡在哪,常见是https://repo.packagist.org域名解析失败,可临时换国内镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com
装完第一件事:检查 .env 和 key
php artisan key:generate 不是可选项,是必做项。没执行就跑 php artisan serve,会报 Application key not set,页面空白,日志里只有一行 production.ERROR: The only supported ciphers are 'AES-128-CBC' and 'AES-256-CBC' —— 实际跟 cipher 无关,就是 key 缺失。
- 生成后检查
.env文件里APP_KEY是否已写入,值应为base64:开头的字符串 - 别用
php artisan key:generate --show然后手动粘贴,容易多空格或换行 - Git 提交前确认
.env已加到.gitignore,否则密钥泄露风险真实存在
真正麻烦的不是装不上,而是装完发现 storage 权限不对、APP_URL 写成 http://localhost 导致混合内容报错、或者 config/cache.php 里默认用 file 驱动却忘了清缓存 —— 这些问题不会在安装阶段报错,但会让后续调试绕一大圈。











