最干净的laravel安装方式是直接用composer create-project而非laravel/installer,因其避免版本缓存与配置冲突;需确保php≥8.2且启用mbstring、tokenizer等扩展;国内需配置阿里云或腾讯镜像;安装后必须执行php artisan key:generate并设置storage和bootstrap/cache可写权限。

直接用 composer create-project,别碰 laravel/installer
现在装 Laravel 最干净、最不容易翻车的方式,就是绕过全局安装的 laravel/installer,直接用 Composer 自带的 create-project 命令。那个 installer 工具早就不推荐了,它会缓存旧版本、跟全局 Composer 配置打架,尤其在多项目混用时,laravel new myapp 一跑就可能拉出个你根本没想过的 Laravel 8 或 9。
-
composer create-project laravel/laravel myapp→ 装最新稳定版(当前是 Laravel 11) -
composer create-project laravel/laravel myapp "10.*"→ 装 Laravel 10.x 系列最新小版本 -
composer create-project laravel/laravel myapp "9.52.16"→ 装精确到 patch 的版本,适合复现线上环境 - 所有命令里的版本号必须加英文双引号,否则 shell 可能把
*当通配符解析出错
PHP 版本和扩展缺一个,create-project 就会静默失败
不是报错停住,而是卡在 “Installing dependencies” 十几分钟不动,或者最后生成的项目一运行就抛 RuntimeException: The use statement with aliasing is not allowed here —— 这基本等于告诉你:PHP 的 tokenizer 扩展没开。Laravel 11 强制要求 PHP ≥ 8.2,且以下扩展必须启用:mbstring、openssl、pdo、tokenizer、xml、ctype、json。
- 检查命令:
php -v看版本,php -m | grep -E 'mbstring|tokenizer|pdo'看模块是否加载 - Windows 用户用 XAMPP/MAMP,得手动打开
php.ini,删掉对应扩展行前的分号(比如;extension=mbstring→extension=mbstring),改完必须重启服务 - Linux/macOS 用户如果用系统包管理器装的 PHP(如
apt install php),可能只装了核心,要额外装扩展包,例如 Ubuntu 上:sudo apt install php-mbstring php-xml php-tokenizer
国内不换镜像,create-project 大概率超时或重试失败
默认走 packagist.org,国内直连经常卡在下载 symfony/... 或 nesbot/carbon,表现为反复重试、Connection timed out,甚至最终生成一个空壳项目(只有 vendor/autoload.php 和一堆未解压的 zip 缓存)。
- 切阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 切腾讯镜像:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 验证是否生效:
composer config -g repo.packagist,输出应为镜像地址,不是packagist.org - 如果之前失败过,删掉残留的
myapp目录再重试——Composer 不会自动清理半途崩溃的临时文件
装完不能直接访问,php artisan key:generate 和权限是硬门槛
很多人跑完 create-project 就急着 php artisan serve,结果浏览器白屏或报 Whoops, looks like something went wrong。这不是框架坏了,是 Laravel 启动前最关键的两步没走:
- 进项目目录后第一件事:
php artisan key:generate,否则APP_KEY为空,加密、session、cookie 全崩 - 确保
storage/和bootstrap/cache/目录可写(Linux/macOS:chmod -R 775 storage bootstrap/cache;Windows 一般不用动,但 WSL 下也要检查) - 别忘了复制
.env.example为.env,哪怕先不配数据库,这一步也影响环境加载逻辑 - 启动命令仍是:
php artisan serve,地址默认http://127.0.0.1:8000
最常被跳过的其实是 key:generate —— 它不报错,但后续所有加密相关功能都失效,调试时很难联想到是这一步漏了。










