在 CentOS 上搭 ThinkPHP 开发环境,真正容易卡住的通常不是某一条命令,而是 PHP、Nginx、Composer 和数据库几层是否衔接正确。下面按“先装运行环境、再配站点、最后部署项目与排错”的顺序梳理一遍,读完你可以快速判断每一步该看到什么结果,以及 502、路由失效、Composer 过慢这类问题该从哪里下手。
系统准备与 PHP 运行环境安装
开始前,先把系统更新到较新状态,并安装基础开发工具。虽然这一步看起来简单,但后面很多编译或依赖安装问题,往往都和这里缺少基础组件有关。
sudo yum update -y
sudo yum groupinstall "Development Tools" -y
ThinkPHP 8.x 要求 PHP 版本不低于 8.0,因此这里需要安装 PHP 核心、CLI、FPM,以及常用扩展。原文推荐使用 Remi 仓库,这也是在 CentOS 上安装较新 PHP 版本时更省事的一种做法。
添加 EPEL 与 Remi 仓库
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
# CentOS 7
# CentOS 8 需替换为对应 Remi 仓库地址
启用 PHP 8.0 软件源
以下命令以 PHP 8.0 为例;如果你准备使用 8.1 或 8.2,仓库名称也要对应替换。

sudo yum-config-manager --enable remi-php80
安装 PHP、扩展并启动 PHP-FPM
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl php-bcmath -y
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
安装完成后,用下面的命令确认 PHP 版本是否已经进入 8.x:

php -v
如果输出中能看到 PHP 8.x 版本信息,说明这一层已经就绪,接下来可以继续配置 Web 服务。
Nginx 与 PHP 解析配置
ThinkPHP 需要 Web 服务器处理 HTTP 请求,Nginx 是比较常见的组合方案,轻量而且配置清晰。先完成 Nginx 安装与启动,再把 PHP 解析和 ThinkPHP 路由规则接上。
安装并启动 Nginx
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
完成后,可以在浏览器中访问服务器 IP;如果出现 Nginx 欢迎页,说明 Web 服务已经启动成功。
为 ThinkPHP 配置站点
编辑 Nginx 配置文件,或者新建一个站点配置:
sudo vi /etc/nginx/conf.d/thinkphp.conf
下面这段配置里,最关键的是两处:一是 root 必须指向 ThinkPHP 项目的 public 目录;二是 try_files 负责把请求转给框架入口文件,从而支持 PATHINFO 和路由重写。
server {
listen 80;
server_name your_domain.com; # 替换为域名或IP
root /path/to/your/thinkphp/project/public; # ThinkPHP项目public目录
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$query_string; # 路由重写,支持PATHINFO
}
location ~ .php$ {
fastcgi_pass unix:/run/php-fpm/www.sock; # 与PHP-FPM通信
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /.ht {
deny all; # 禁止访问.htaccess文件
}
}
检查配置并重载服务
修改完配置后,先做语法检查,再重启 Nginx:
sudo nginx -t
如果输出里出现 syntax is ok,说明配置语法没有问题,可以继续执行:
sudo systemctl restart nginx
这一节完成后,Nginx、PHP-FPM 与 ThinkPHP 的入口路径就算串起来了。
Composer 安装与 ThinkPHP 项目部署
ThinkPHP 的项目依赖通常通过 Composer 管理,因此在部署代码前,先把 Composer 装好。随后再创建项目或上传已有代码,并补齐数据库连接配置。
安装 Composer
先安装 Composer 运行时常见会用到的依赖:
sudo yum install unzip git -y
然后下载安装 Composer:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
用下面的命令确认是否安装成功:
composer --version
能正常看到版本号,就可以继续部署 ThinkPHP 项目。
创建或放入项目代码
先进入你的项目目录:
cd /path/to/your/thinkphp/project
如果是新项目,可以直接使用 Composer 创建一个 ThinkPHP 8.x 项目:
composer create-project topthink/think your-project-name
如果你已经有现成项目,也可以直接将代码上传到 /path/to/your/thinkphp/project 目录。
配置数据库连接信息
部署好项目后,需要编辑项目根目录下的 .env 文件,或者按项目结构修改 config/database.php。下面这些参数是最基本的数据库连接项:
DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=your_database_name
DB_USER=your_database_user
DB_PASSWORD=your_database_password
DB_PORT=3306
DB_PREFIX=tp_ # 表前缀(可选)
其中 DB_HOST、DB_NAME、DB_USER 和 DB_PASSWORD 需要与你实际创建的数据库信息保持一致,否则项目即使能打开首页,也会在访问数据时直接报连接错误。
数据库初始化与项目启动
ThinkPHP 环境能不能真正跑起来,数据库这一层很关键。这里以 MySQL/MariaDB 为例,完成安装、初始化账户,再把应用目录权限调整到可用状态。
安装并启动 MySQL
sudo yum install mysql-server -y
sudo systemctl start mysqld
sudo systemctl enable mysqld
获取临时密码并重设 root 密码
首次安装后,可以先从日志里取出 root 用户的临时密码:
sudo grep 'temporary password' /var/log/mysqld.log
然后登录 MySQL,修改 root 密码:
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword'; # 替换为强密码
创建业务数据库与账号
建议不要直接让业务程序使用 root 账户,而是单独创建数据库和对应用户:
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'your_database_user'@'localhost' IDENTIFIED BY 'your_database_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_database_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
设置目录权限并启动项目
如果权限不对,Nginx 或 PHP-FPM 很可能无法正常读取项目文件,或者运行时目录无法写入。先执行以下命令:
sudo chown -R nginx:nginx /path/to/your/thinkphp/project
# CentOS 7默认Nginx用户为nginx
sudo chmod -R 755 /path/to/your/thinkphp/project
开发环境下,也可以直接使用 ThinkPHP 内置服务器启动项目做验证:
cd /path/to/your/thinkphp/project
php think run
随后在浏览器中访问 http://your_server_ip:8000。如果能够看到 ThinkPHP 欢迎页面,说明项目已经能正常启动,剩下主要就是业务代码与配置细节的调整。
常见问题排查思路
如果环境没有一次跑通,通常也集中在少数几个点上。与其反复重装,不如先按现象定位所在层级。

502 Bad Gateway
这种情况通常意味着 Nginx 没有成功把请求转给 PHP-FPM。可以先检查 PHP-FPM 是否在运行:
sudo systemctl status php-fpm
同时核对 Nginx 配置中的 fastcgi_pass 是否与 PHP-FPM 实际监听路径一致,原文给出的常见路径是 /run/php-fpm/www.sock。如果这里写错,即使 PHP 已安装,也会直接出现 502。
路由失效
ThinkPHP 的路由如果访问后总是 404,优先检查站点配置中是否包含这条规则:
try_files $uri $uri/ /index.php$query_string;
这条规则是把未命中的路径交给框架入口处理的关键。若你使用 Apache,还需要确认项目里的 public/.htaccess 没有被误删。
Composer 安装过慢
如果依赖安装速度很慢,可以直接为 Composer 配置镜像源。原文给出的示例是阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
对于国内网络环境,这一步往往能明显改善下载速度,也能减少创建项目时的超时问题。
搭建完成后的检查重点
把整套流程串起来看,CentOS 上的 ThinkPHP 开发环境是否搭好,核心其实只看几件事:PHP 版本是否达到 8.x、PHP-FPM 与 Nginx 是否联通、站点根目录是否指向 public、数据库账号是否能连通项目配置,以及目录权限是否满足运行要求。
如果你是第一次部署,建议每完成一层就做一次验证,例如先看 php -v,再看 Nginx 欢迎页,再检查 nginx -t,最后再启动 ThinkPHP。这样出错时更容易定位,也比一次性全装完再排查高效得多。







