thinkphp 8.0 部署 linux 服务器核心是环境、目录、请求三者精准匹配:php≥8.0且cli/fpm版本一致,项目结构以public为根目录,nginx配置需正确指向public并禁用fastcgi_split_path_info。

ThinkPHP 8.0 部署到 Linux 服务器,核心就三件事:环境对得上、目录摆得对、请求转得准。不是代码有问题,90% 是这三处没调好。
确认 PHP 版本和关键扩展
TP8 强制要求 PHP ≥ 8.0.0,且 CLI 和 PHP-FPM 必须版本一致——很多人在宝塔里选了 PHP 8.2,但终端执行 php -v 还是 7.4,这是因为 PATH 没刷新,或 Nginx 调用的是另一套 PHP-FPM。
- 运行 php -v 看 CLI 版本,必须 ≥ 8.0.0(推荐 8.1 或 8.2)
- 运行 ps aux | grep php-fpm 找出 PHP-FPM 进程路径,再用该路径执行 /usr/bin/php-fpm81 -v 确认 FPM 版本
- 检查必需扩展是否启用:php -m | grep -E "mbstring|openssl|pdo|mysqlnd|fileinfo",缺一不可
- Ubuntu/Debian 用户注意:/etc/php/8.1/fpm/php.ini 和 /etc/php/8.1/cli/php.ini 是两个独立文件,Nginx 只读 FPM 配置
项目结构与 vendor 初始化
别直接上传完整项目包,也别指望 composer 自动“猜对”版本。TP8 在 PHP 版本不足时会静默降级安装 TP6,表面正常,实则报 Class 'think\App' not found。
- 先清空目标目录,确保无残留
- 在项目根目录执行:composer create-project topthink/think tp8 --no-interaction -vvv,加 -vvv 可看到真实下载过程
- 国内务必配阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 如果提示 vendor/autoload.php 不存在,不要重装,进项目根目录直接运行 composer install
- 若报权限错误,检查当前用户对 vendor/ 和 runtime/ 是否有写权限
Nginx 配置必须精准指向 public
把整个项目根目录设为网站根目录是高危操作——app/、config/、.env 全部可被直接访问。TP8 的入口只在 public/index.php。
- 站点配置中,root 必须设为 /var/www/your-project/public(绝对路径),不能是项目根目录
- 伪静态规则用标准写法,清空原内容后粘贴:
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
- 务必删掉所有 fastcgi_split_path_info 行,TP8 不依赖它,留着会导致路由错乱
- SCRIPT_FILENAME 用 $realpath_root,不用 $document_root,避免软链接下报 “No input file specified”
权限、缓存与环境变量收尾
部署后白屏、500 或日志不写,大概率卡在这几步。
- runtime/ 目录必须存在且可写:mkdir -p runtime/log runtime/cache runtime/session,再 chown -R www:www runtime/(宝塔默认用户组)
- 生产环境执行:composer install --optimize-autoloader --no-dev,去掉开发依赖
- .env 文件权限设为 644,放在项目根目录;APP_DEBUG = false,DEFAULT_TIMEZONE = Asia/Shanghai
- 多环境需靠系统级 APP_ENV 变量,不是 .env 里的值。可在 Nginx 的 fastcgi_param 中透传:fastcgi_param APP_ENV production;
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











