ThinkPHP 8.0线上部署核心是精简、隔离与配置对齐:只保留public/app/config/route/vendor五目录,设public为唯一Web入口,删除.env、关闭debug、运行composer install --optimize-autoloader --no-dev,并确保PHP≥8.1、启用fileinfo等必需扩展且CLI与FPM版本一致。

ThinkPHP 8.0 打包部署到线上服务器,核心是「精简+隔离+配置对齐」:只保留运行必需文件、确保 public 为唯一 Web 入口、关闭调试并适配生产环境配置。不是把整个开发目录一传了事,否则极易暴露敏感路径或触发 500 错误。
打包前必须清理和确认的事项
打包前务必在本地或构建机上完成以下操作,避免把开发痕迹带到线上:
- 删除项目根目录下的 .env 文件(数据库密码、密钥等不能明文上线)
- 检查 config/app.php 中
'debug' => false已生效,禁用调试模式 - 确认 runtime/ 目录已清空(它会在首次访问时自动重建;若需预置,请确保上传后设为可写)
- 运行
composer install --optimize-autoloader --no-dev,跳过开发依赖,生成优化后的自动加载映射 - 检查 vendor/autoload.php 是否存在,且无报错;TP8 不再自带 think 命令行脚本,无需打包
think文件
只打包这 5 个关键目录
线上最小运行集只需以下目录(全部位于项目根目录下):
- public/(必须,含 index.php 和静态资源)
- app/(业务逻辑)
- config/(已填好线上数据库、缓存等参数的正式配置)
- route/(路由定义)
- vendor/(已通过 composer install 安装完毕,含框架及依赖)
执行打包命令(Linux/macOS):tar -czf tp8-prod-$(date +%Y%m%d).tar.gz public/ app/ config/ route/ vendor/
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
Windows 用户可用 7-Zip 或 WinRAR 手动选中这 5 个目录压缩,注意不要包含 .git、tests、.github、.vscode 等无关内容。
上传后在线上服务器的关键配置
上传解压后,别急着访问,先做三件事:
-
设置网站根目录为 public 子目录:宝塔用户在【网站】→【设置】→【网站目录】中将“运行目录”改为
/public;Nginx 手动配置则确保root /www/wwwroot/your-site/public; -
赋予 runtime 可写权限:执行
chmod -R 755 runtime/,再确认所属用户为 web 进程用户(如 www 或 www-data):chown -R www:www runtime/ -
启用 ThinkPHP 伪静态规则:宝塔直接选【伪静态】→【thinkphp】;Nginx 配置中必须有
try_files $uri $uri/ /index.php?$query_string;,且fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
PHP 环境必须满足的硬性条件
TP8.0 不兼容 PHP 7.x,线上 PHP 版本和扩展缺一不可:
- PHP 版本 ≥ 8.0.0(推荐 8.1 或 8.2,8.0 已停止安全更新)
- 必须启用扩展:
fileinfo、mbstring、openssl、curl、pdo_mysql、ctype、json - 验证方式:
php -m | grep -E "fileinfo|mbstring|pdo";注意 CLI 和 FPM 的 php.ini 是两个文件,Nginx 走的是 FPM 配置 - 宝塔用户安装 PHP 后,务必点击【服务管理】→【重启】,否则新版配置不生效
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










