laravel 10+ 要求 php ≥ 8.1(laravel 11 需 ≥ 8.2),composer ≥ 2.5,且必须启用 mbstring、xml、zip、curl、openssl、pdo_mysql 等扩展;开发首选 php artisan serve,避免过早配置 web 服务器。

PHP 版本必须 ≥ 8.1
Laravel 10+ 已彻底放弃对 PHP 7.x 的支持,装完发现 composer create-project laravel/laravel 报错或启动白屏,八成是 PHP 太老。不是“建议”而是硬性门槛:Laravel 10 要求 PHP 8.1+,Laravel 11 更进一步要求 PHP 8.2+。
实操建议:
- 运行
php -v确认版本,别只看系统默认 —— macOS 或某些 Linux 发行版自带的 PHP 常是 7.4 或 8.0 - 用
brew install php@8.2(macOS)或apt install php8.2-cli php8.2-mbstring php8.2-xml php8.2-zip(Ubuntu)手动装齐扩展 -
mbstring、xml、zip、curl、openssl这几个扩展缺一不可,少一个都可能卡在composer install阶段
Composer 必须是 2.5+ 且全局可用
旧版 Composer(比如 1.x 或 2.4 以下)在拉取 Laravel 11 包时会直接失败,报错类似 Could not find package laravel/laravel in a version matching "11.*",这不是网络问题,是包元数据解析不兼容。
实操建议:
- 执行
composer --version,低于2.5.0就升级:composer self-update - 别用
sudo composer create-project—— 权限混乱会导致vendor/下文件属主异常,后续php artisan命令可能因写入日志失败而静默退出 - Windows 用户若用 WSL,确保 Composer 安装在 WSL 内,而不是 Windows 的 CMD 里 —— 否则路径映射和权限全乱
Web 服务器只需满足「能跑 PHP」就行
Laravel 自带 php artisan serve,开发阶段根本不需要 Apache 或 Nginx。很多人花半天配 vhost、改 .htaccess,结果发现连 artisan serve 都起不来,纯属方向错误。
实操建议:
- 首次验证环境,就用
php artisan serve,它默认监听http://127.0.0.1:8000,浏览器打开不报 500 就说明 PHP 和基础扩展 OK - 真要上 Nginx/Apache,重点不是重写规则本身,而是确认
public/是文档根目录,且index.php有执行权限 —— 常见坑是 SELinux 或 AppArmor 拦截了 PHP-FPM 对storage/的写入 - 别碰
APP_URL和ASSET_URL除非你真在用 CDN 或子目录部署,本地开发留空或设为http://localhost:8000最省事
数据库驱动不是装了 MySQL 就自动好使
装了 MySQL 服务 ≠ Laravel 能连上。更常见的情况是:MySQL 在运行,但 PHP 没装对应 PDO 扩展,或者 .env 里填了 root 密码却忘了给 root 开远程访问(本地开发其实该用普通用户)。
实操建议:
- 检查
php -m | grep pdo和php -m | grep mysql,缺pdo_mysql就装 —— Ubuntu 是php8.2-mysql,macOS 是brew install php@8.2 --with-mysql -
.env中的DB_HOST=127.0.0.1比DB_HOST=localhost更稳,后者在某些 PHP 配置下会走 Unix socket,反而连不上 TCP 端口 - 第一次跑
php artisan migrate前,先手工用mysql -u your_user -p -h 127.0.0.1登录试试 —— 别让迁移失败的报错掩盖了底层连接问题
环境变量加载顺序、OPcache 是否启用、storage/ 目录权限 —— 这些细节不报错但会让命令行为诡异,得一个个排除。装 Laravel 不难,难的是把每个“应该正常”的环节都亲手验证一遍。











