Laravel 11在AlmaLinux 9上部署的核心难点是PHP 8.2+、Composer 3.x及全部必需扩展(mbstring/openssl/pdo/tokenizer/xml/curl/ctype/json/intl)三者必须同时满足且真实启用,缺一即失败;需用Remi仓库升级PHP、验证php -m输出全项、配置腾讯镜像源、强制--no-interaction创建项目并立即执行key:generate,同时修正MySQL认证插件、防火墙及SELinux标签。

AlmaLinux 9 上配置 Laravel 11 的核心难点不在“装不装得上”,而在于 PHP 版本、Composer 版本、扩展启用状态三者必须同时满足硬性门槛,缺一不可——php -v 显示 8.2+ 但 php -m 缺 mbstring,或 composer --version 是 2.7.7,项目都根本跑不起来。
确认 PHP 8.2+ 且关键扩展已加载
Laravel 11 启动前会强制校验 PHP 版本和扩展,失败直接中止,不会给你报错机会。别只信 php -v,要验证运行时真实加载的模块:
-
php -v输出必须 ≥ 8.2.0(AlmaLinux 9 默认 PHP 是 8.1,必须换 Remi 仓库) - 执行
php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|curl|ctype|json|intl)",每一项都必须有输出 - 特别注意
mbstring:Remi 安装后需额外装php-mbstring,否则php artisan key:generate会静默失败 - Windows 用户常漏改
php.ini路径——用php --ini查准位置,确保extension=mbstring等行未被注释
必须用 Composer 3.x,且设国内镜像源
Composer 2.x 无法解析 Laravel 11 的依赖树,create-project 会卡在 “Resolving dependencies” 或报 Your requirements could not be resolved,这不是网络问题,是版本不兼容:
- 验证命令:
composer --version必须输出3.x;若为 2.x,请卸载后用官方脚本重装:php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - 国内务必配镜像源,否则下载极慢甚至超时:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 配完用
composer config -l | grep repo.packagist确认生效,避免缓存残留导致仍走国外源
创建项目时加 --no-interaction 并立即生成密钥
Laravel 11 移除了交互式初始化流程,不加参数会导致 .env 为空、APP_KEY 为默认占位符,后续所有加密、Session、CSRF 全部失效:
- 正确命令:
composer create-project laravel/laravel blog --no-interaction(不能省略--no-interaction) - 进目录后立刻执行:
cd blog && php artisan key:generate,否则php artisan serve能启但登录/表单全部 500 - 若已误操作,删掉
.env重新cp .env.example .env,再跑key:generate
数据库连通性常因认证插件或端口拦截静默失败
页面能打开不代表后端通——Laravel 11 默认用 DB_CONNECTION=mysql,但 MySQL 8.0+ 默认认证插件是 caching_sha2_password,PDO 不支持,连接会超时无提示:
- 检查 MySQL 认证方式:
SELECT user, host, plugin FROM mysql.user WHERE user='your_db_user';,若 plugin 是caching_sha2_password,需改为mysql_native_password: - 执行:
ALTER USER 'your_db_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; - 防火墙检查:
sudo firewall-cmd --list-ports,确保3306开放;Windows 用户还需关掉 Windows Defender 防火墙对本地 3306 的拦截 -
.env中DB_HOST别写localhost,统一用127.0.0.1,避免 IPv6 解析异常
最易被忽略的是:AlmaLinux 9 默认 SELinux 启用,若用 Apache 运行 Laravel,storage 和 bootstrap/cache 目录需打上 httpd_sys_rw_content_t 标签,否则日志写不进、缓存生成失败——这问题不报 PHP 错,只在 journalctl -u httpd 里见 AVC denied 记录。


















