根本原因是laravel 11要求php≥8.2,而rocky linux 9默认仅提供php 8.1;需启用remi仓库切换php:remi-8.2模块,并安装必需扩展,同时解决composer内存限制与selinux写入权限问题。

根本原因不是 Rocky Linux 9 不兼容,而是 Laravel 11 要求 PHP ≥ 8.2,而 Kamatera 默认镜像的 Rocky Linux 9 自带 PHP 8.1 —— 版本不满足最低要求。
检查 PHP 版本是否达标
Laravel 11 明确要求 PHP ≥ 8.2(官方文档截至 2026 年 9 月仍有效),但 Rocky Linux 9 的 baseos 仓库默认只提供 php-8.1。运行以下命令即可确认:
php -v
若输出为 PHP 8.1.x,则直接导致 composer create-project laravel/laravel 报错,典型提示是:
Your requirements could not be resolved to an installable set of packages. - laravel/framework[v11.0.0, ..., v11.23.3] require php >=8.2.0 -> your php version (8.1.30) does not satisfy that requirement.
此时 Composer 会直接中止,不进入依赖下载阶段。
升级 PHP 到 8.2+ 的实操路径
Rocky Linux 9 使用 dnf 管理软件包,不能直接用 pecl 或源码编译覆盖系统 PHP(易破坏 dnf 依赖)。正确做法是启用 Remi 仓库(经验证稳定、被 Rocky 官方推荐):
- 安装 EPEL 和 Remi 仓库:
sudo dnf install epel-release -y<br>sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
- 启用 PHP 8.2 模块:
sudo dnf module reset php<br>sudo dnf module enable php:remi-8.2
- 安装 PHP 及 Laravel 必需扩展:
sudo dnf install php php-cli php-common php-mbstring php-xml php-zip php-gd php-bcmath php-opcache php-pdo php-mysqlnd -y
- 重启 Web 服务(如使用 Apache):
sudo systemctl restart httpd
或 Nginx + PHP-FPM:sudo systemctl restart php-fpm
再次运行 php -v,应显示 PHP 8.2.x。注意:不要运行 dnf update php 单独升级,必须通过模块机制切换,否则仍卡在 8.1。
Composer 版本与内存限制常被连带触发
即使 PHP 版本达标,Kamatera 小内存 VPS(如 1GB RAM)上仍大概率遇到两类连带失败:
-
Allowed memory size of ... bytes exhausted:Composer 解析 Laravel 11 的依赖图时内存爆掉。解决方法是临时提权执行:php -d memory_limit=-1 /usr/bin/composer create-project laravel/laravel myapp --prefer-dist
-
Your Composer version is outdated:Laravel 11 要求 Composer ≥ 2.5。检查:composer --version
;若低于该版本,运行:composer self-update
- 国内网络下还建议配阿里云镜像,避免超时中断:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
权限和 SELinux 是 Rocky Linux 上最易忽略的坑
Kamatera 的 Rocky Linux 9 镜像默认启用 SELinux(enforcing 模式),而 Laravel 的 storage 和 bootstrap/cache 目录需要写入权限。单纯 chmod 775 不起作用,SELinux 会拦截。
验证是否是 SELinux 导致:
ls -Z storage/
若看到 unconfined_u:object_r:user_home_t:s0 类似标记,说明上下文未适配 Web 进程。修复命令(一次性):
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/myapp/storage(/.*)?"<br>sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/myapp/bootstrap/cache(/.*)?"<br>sudo restorecon -Rv /var/www/html/myapp/
如果不想调 SELinux,可临时设为 permissive(仅调试用):
sudo setenforce 0,但上线前务必恢复:
sudo setenforce 1。
真正卡住安装的,往往不是“不会装”,而是 PHP 版本、Composer 内存、SELinux 上下文这三者里至少踩中一个——尤其在 Kamatera 这类精简镜像上,每个环节都得手动过一遍。











