Laravel 11 要求 PHP 8.2+、必需扩展(mbstring/openssl/pdo/tokenizer/xml/curl)、Composer 3.x、强制 --no-interaction 初始化,并需正确配置数据库认证与 date.timezone。

PHP 8.2+ 和扩展缺一不可,否则连 php -v 都过不了
Laravel 11 启动前就会校验 PHP 版本和关键扩展,不是“报错再装”,而是根本跑不起来。你执行 php -v 必须输出 ≥8.2.0;执行 php -m(Windows)或 php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|curl)"(Linux/macOS)必须全部命中——mbstring 尤其容易漏:Windows 下常见 php.ini 里 extension=mbstring 还被注释着,改完得重启服务(比如 Apache 或 PHP-FPM),光解压 PHP ZIP 包不配置等于白搭。
必须用 Composer 3.x,composer create-project 卡住就是版本不对
Composer 2.5.x 及以下会卡在 Resolving dependencies 或直接报 Your requirements could not be resolved,这不是网络问题,是 Laravel 11 的 composer.json 显式依赖 Composer 3 的插件解析机制。验证方式就一条:composer --version 输出必须是 3.x。Windows 用户别手滑下 Composer 2 安装包,直接去官网下 Composer-Setup.exe;Linux/macOS 别用包管理器装(如 apt/yum 默认还是 2.x),老实用官方一键脚本:php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 然后安装到 /usr/local/bin。
--no-interaction 不是可选项,是防止 .env 和 APP_KEY 崩溃的保险丝
Laravel 11 初始化逻辑已剥离交互流程,一旦你运行 composer create-project laravel/laravel blog 没加 --no-interaction,终端会卡在 “Would you like to install Laravel Breeze?” 提示——但这个提示根本不会出现(因为没 TTY),项目看似创建成功,实则 .env 是空的、APP_KEY 是默认值 base64: 开头的占位符。正确姿势只有一条命令:composer create-project laravel/laravel blog --no-interaction,进目录后立刻补上:cd blog && php artisan key:generate。漏掉这步,后续所有加密、Session、CSRF 都会失效。
php artisan serve 能跑不等于环境真通,数据库连不上常因端口/权限静默失败
启动 php artisan serve 看到 Starting Laravel development server 并打开 http://127.0.0.1:8000 有页面,不代表后端通畅。典型静默故障:MySQL 服务开着,但 DB_PORT=3306 被防火墙拦截(尤其 Windows Defender 防火墙默认拦本地 3306);或 DB_USERNAME=root 在 MySQL 8.0+ 默认用 caching_sha2_password 认证,而 PDO 默认不支持——此时 php artisan tinker 里执行 DB::connection()->getPdo() 会直接抛出 SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client。解决方法只有两个:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';,或改 DB_CONNECTION=sqlite 先绕过。
最常被跳过的其实是 php.ini 里 date.timezone 没设——它不会让 Laravel 启动失败,但会导致日志时间全乱、Carbon 解析日期出错、队列任务延迟异常,而且错误不报在控制台,只藏在 storage/logs/laravel.log 里。









