CentOS 7 安装 Laravel 11 的核心难点是环境不兼容:必须通过 remi 仓库安装 PHP 8.2+、Composer 2.7+,禁用 laravel new 而改用 create-project --no-interaction,并在 Nginx 中用 $realpath_root 设置 SCRIPT_FILENAME。

在虚拟机 CentOS 7 上安装 Laravel 框架,核心难点不是 Laravel 本身,而是系统环境不满足官方最低要求。Laravel 11 强制要求 PHP ≥ 8.2.0,而 CentOS 7 默认源最高只提供 PHP 5.4(EPEL)或 7.3(Webtatic),必须借助第三方仓库手动升级 PHP 并严格配置依赖链。
先装对版本的 PHP 8.2+
CentOS 7 自带源无法提供 PHP 8.2,推荐使用 remi 仓库:
- 安装 EPEL 和 remi:
yum install epel-release -y && yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y - 启用 PHP 8.2 模块:
yum-config-manager --enable remi-php82 - 安装必要扩展:
yum install php82 php82-php-fpm php82-php-mbstring php82-php-xml php82-php-pdo php82-php-zip php82-php-gd php82-php-opcache php82-php-bcmath php82-php-tokenizer php82-php-cli php82-php-json php82-php-openssl php82-php-posix php82-php-pcntl -y - 创建软链接让系统命令识别:
ln -sf /opt/remi/php82/root/usr/bin/php /usr/local/bin/php - 验证:
php -v应输出PHP 8.2.x;php -m | grep -E "mbstring|pdo|xml|openssl|tokenizer"确保关键模块已加载
再配兼容的 Composer 2.7+
Laravel 11 的 composer.json 使用了 PHP 8.2 的语义版本语法(如 ^8.2),旧版 Composer(≤2.6)会报错 Package laravel/framework has a PHP requirement incompatible with your PHP version:
- 下载指定高版本:
curl -sS https://getcomposer.org/installer | php -- --filename=composer --version=2.7.8 - 全局安装:
mv composer /usr/local/bin/composer && chmod +x /usr/local/bin/composer - 换阿里镜像加速(否则拉包极慢或超时):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证:
composer --version输出应为Composer version 2.7.8或更高
用 create-project 创建项目(别用 laravel new)
laravel/installer 工具在 CentOS 7 + PHP 8.2 下存在 PATH、权限及反射行为兼容问题,执行 laravel new blog 常卡死或报 failed to open stream:
- 直接用 Composer 创建项目:
composer create-project laravel/laravel blog --no-interaction - 进入项目目录:
cd blog - 生成密钥:
php artisan key:generate - 设置
.env文件权限(Nginx 需读取):chmod 644 .env
Nginx 必须正确配置 fastcgi_param
常见 502 错误多因 SCRIPT_FILENAME 路径错误。Nginx 配置中不能写死 $document_root,需用 $realpath_root 确保真实路径解析:
- 编辑站点配置(如
/etc/nginx/conf.d/blog.conf): location ~ \.php$ {-
fastcgi_pass unix:/var/run/php-fpm/www.sock; -
fastcgi_index index.php; -
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;← 关键! -
include fastcgi_params; }- 重启服务:
systemctl restart nginx php82-php-fpm


















