laravel 11 在 centos stream 6 上无法运行,因其基于 rhel 6,glibc 版本过低(2.12),不满足 php 8.2+ 所需的 glibc ≥ 2.17,且官方及第三方源均不再支持;唯一可行方案是使用 docker 隔离运行时环境,并严格配置 app_key、目录权限与 mysql 连接参数。

Laravel 11 在 CentOS Stream 6 上无法运行 —— 因为它根本不支持。CentOS Stream 6 基于 RHEL 6,其默认系统级 PHP 最高只到 5.3(即使手动编译也极难稳定升至 8.2+),而 Laravel 11 强制要求 PHP 8.2+ 且校验严格:没达到版本或缺失任一扩展(mbstring、openssl、pdo、tokenizer、xml、curl),连 php -v 都会直接失败,更不用说 composer create-project。
为什么 CentOS Stream 6 连 PHP 8.2 都装不上
CentOS Stream 6 的 glibc 版本太老(2.12),而 PHP 8.2 编译依赖 glibc ≥ 2.17。你尝试用源码编译时会卡在 configure: error: off_t undefined; check your library configuration 或链接阶段报 undefined reference to 'clock_gettime' —— 这不是配置问题,是底层 ABI 不兼容。
- 官方软件源(base/epel)里最高只提供 PHP 5.4,且 EPEL 6 已于 2020 年停止维护
- 第三方仓库(如 IUS、Remi)早已放弃对 CentOS Stream 6 的支持,Remi 8+ 仅面向 RHEL/CentOS 8+ 和 AlmaLinux/Rocky 8+
- 哪怕强行用静态链接或降级编译器,生成的 PHP 二进制也无法加载
mbstring等扩展(dlopen 失败),php -m永远缺项
真正可行的替代路径
如果你手上只有 CentOS Stream 6 物理机或旧虚拟机,又必须跑 Laravel 11,唯一现实方案是**隔离运行时环境**,而非升级系统本身:
- 用
docker run --rm -it -v $(pwd):/app -w /app php:8.2-cli composer create-project laravel/laravel blog --no-interaction在容器内初始化项目(注意加--no-interaction) - 把生成的
blog/目录复制出来,再用 Nginx + PHP-FPM 容器反向代理宿主机的 80 端口(不要试图在宿主机上跑 PHP-FPM) - 数据库必须外置:用独立 MySQL 8.0 容器或云数据库,
DB_HOST设为宿主机 IP(172.17.0.1)而非localhost(容器内 localhost 是自己) - 别碰
php artisan serve:它绑定127.0.0.1:8000,宿主机 Nginx 无法转发;改用php artisan octane:start --server=roadrunner --host=0.0.0.0 --port=8000并映射端口
最省事但常被忽略的硬性动作
即便走 Docker 路线,以下三点漏掉任意一个,Laravel 11 就会静默失败:
-
APP_KEY必须在容器外生成并写入.env:宿主机执行php -r "echo base64_encode(random_bytes(32));",粘贴到.env的APP_KEY=base64:...行 —— 容器内生成的密钥在重启后丢失,Session/CSRF 全崩 -
storage/和bootstrap/cache/目录权限必须是宿主机用户可写(chmod -R 775 storage bootstrap/cache),Docker 默认以 root 运行,挂载后权限错乱会导致日志写不进、视图缓存失效 - MySQL 连接必须显式指定
DB_PORT=3306且关闭DB_SSL_MODE=none:RHEL 6 系统 OpenSSL 版本过低,PDO MySQL 默认启用加密握手,会卡在SQLSTATE[HY000] [2002] Connection refused(实际是 SSL 协商失败)
别在 CentOS Stream 6 上折腾源码编译或 SCL(Software Collections)——那些包要么根本不存在,要么装上就破坏系统 Python 2.6 环境。真要长期维护,换 Rocky Linux 9 或 AlmaLinux 9 是唯一可持续的选择。











