必须先安装PHP 8.2+(推荐brew install php@8.3)并启用mbstring、openssl、tokenizer等扩展,再用brew install composer配置阿里云镜像,最后执行composer create-project laravel/laravel myapp "11.*" --no-interaction并php artisan key:generate。

Mac上安装Laravel 11,核心前提是PHP 8.2+、Composer可用,且不能依赖系统自带PHP(它通常太旧或缺少扩展)。直接用laravel new或composer create-project会失败,除非你已手动配好环境。
确认PHP版本和必需扩展
Laravel 11强制要求PHP ≥ 8.2,并启用openssl、mbstring、tokenizer、xml、ctype、json、pdo等扩展。macOS自带的PHP(如22年后的系统)基本不可用——它不更新、无php-fpm、常缺mbstring。
- 运行
php -v,如果输出是PHP 8.1.x或更低,或显示command not found,说明必须重装PHP - 用Homebrew安装推荐版本:
brew install php@8.3(Laravel 11官方支持PHP 8.2/8.3/8.4) - 安装后执行
brew link --force php@8.3确保php命令指向新版 - 验证扩展是否就位:
php -m | grep -E "openssl|mbstring|tokenizer",缺哪个就查php.ini路径(php --ini),确认对应extension=xxx.so未被注释
安装Composer并设为全局可用
Composer不是可选组件,而是Laravel项目构建的唯一入口。Mac上最稳的方式是用Homebrew装,避免权限和路径问题。
- 执行
brew install composer(别用curl管道安装,容易权限错乱) - 检查
composer --version是否返回≥2.5.0(Laravel 11需Composer 2.5+) - 若提示
command not found,说明Homebrew bin未入PATH:运行echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc(Apple Silicon)或/usr/local/bin(Intel) - 国内用户建议立即配置镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
创建Laravel 11项目(两种可靠方式)
不要用过时的laravel/installer全局命令——它默认拉取最新稳定版,但Laravel 11发布后,installer未同步更新策略,容易卡在10.x;也不要用composer global require laravel/installer,它会污染全局依赖。
- 推荐方式:直接用Composer创建指定版本项目
composer create-project laravel/laravel myapp "11.*" - 更精确控制:加
--prefer-dist提速,加--no-interaction跳过交互composer create-project laravel/laravel myapp "11.32.*" --prefer-dist --no-interaction - 进入项目后立刻生成密钥:
cd myapp && php artisan key:generate(否则php artisan serve必报No application encryption key has been specified) - 注意:
.env文件必须存在——如果只有.env.example,先复制:cp .env.example .env
启动服务与常见启动失败原因
php artisan serve是开发阶段最轻量的启动方式,但它对PHP CLI配置敏感,不是“装完就能跑”。
- 启动前确保
storage和bootstrap/cache可写:chmod -R 755 storage bootstrap/cache - 如果报
Class App\Http\Kernel does not exist,90%是vendor/autoload.php没加载成功——检查是否漏了composer install(克隆仓库后必须手动运行) - 如果报
Failed to open stream: No such file or directory指向.env,说明.env不存在或权限不对(ls -la确认) - 端口被占?改用
php artisan serve --port=8001 - 浏览器打开
http://127.0.0.1:8000看到Laravel 11欢迎页,才算真正就绪
最容易被忽略的是PHP CLI和Web Server用的不是同一个php.ini——php -i | grep 'Loaded Configuration File'看到的路径,未必是Apache/Nginx加载的那个。开发阶段统一用php artisan serve,就只关心CLI配置,省去环境错位的排查成本。


















