游乐游手机版
首页/编程语言/文章详情

宝塔ThinkPHP8.0一键部署零基础图文教程

时间:2026-07-08 06:46
宝塔部署ThinkPHP8需选PHP8 1或8 2,启用fileinfo等必要扩展;根目录设为 public;关闭APP_DEBUG并屏蔽 env访问;runtime目录权限755且属主www;配置Nginx伪静态规则,避免404及敏感信息泄露。
使用宝塔面板部署 ThinkPHP 8.0 只需三个核心步骤:选择 PHP 8.1 或 8.2 版本并安装必要扩展;将网站根目录指向 /public;关闭调试模式并禁止 .env 文件访问。此外还需确保 runtime 目录可写并配置伪静态规则。

宝塔 + ThinkPHP 8.0 一键部署图文教程【零基础】

在宝塔面板上部署 ThinkPHP 8.0 无需使用命令行,但关键操作一步都不能出错。核心要点只有三个:正确选择 PHP 版本、将网站根目录设置为 public、关闭调试模式。遗漏其中任何一点,轻则导致页面 404 或白屏,重则可能直接暴露数据库密码——经验教训不可不防。

装 PHP 8.1 或 8.2,别选最新版

ThinkPHP 8.0 需要 PHP 版本至少为 8.0.0,然而 PHP 8.0 官方已停止安全更新,而 8.3 及以上版本可能存在兼容性问题。因此推荐选择 PHP 8.1 或 8.2,既能保证稳定性又能获得良好性能。

  • 登录宝塔后台,点击左侧【软件商店】→ 搜索“PHP” → 找到 PHP 8.1(或 8.2)→ 点击【安装】按钮
  • 勾选扩展时注意:fileinfo、mbstring、openssl、curl、pdo_mysql、ctype、json 这几个扩展一个都不能少
  • 安装完成后,点击该 PHP 版本右侧的【设置】→【服务管理】→ 确认状态显示为“正在运行”,然后点击【重启】一次以确保生效

网站根目录必须设为 /public

ThinkPHP 8.0 的入口文件 index.php 位于 public 目录内。如果网站根目录指向项目根路径(例如 /www/wwwroot/myapp),所有请求将绕过框架直接返回 404,并且可能暴露 app/config 等敏感目录。

  • 左侧【网站】→ 点击【添加站点】→ 输入域名(测试可用 test.local)→ 根目录填写 /www/wwwroot/think8 → PHP 版本选择之前安装好的 8.1
  • 将完整项目压缩包上传至该根目录 → 在线解压 → 确认解压后包含 public/、app/、config/ 等文件夹
  • 返回【网站】列表 → 点击该站点右侧的【设置】→ 选择【网站目录】→ 将【运行目录】修改为 /public → 勾选【重载Nginx配置】→ 点击【保存】

关掉 APP_DEBUG,删掉 .env 里的敏感信息

APP_DEBUG=true 是专用于开发模式的开关。如果在线上环境保持开启,相当于将数据库账号密码、服务器路径、异常堆栈等信息直接输出到网页上——必须避免。

  • 进入【文件】管理器,打开项目根目录下的 .env 文件
  • APP_DEBUG=true 改成 APP_DEBUG=false
  • 检查 DATABASE 部分的配置,将用户名、密码、数据库名暂时留空,后续在宝塔面板中单独创建数据库后再填写
  • 保存后,在浏览器中访问 https://你的域名/.env,应返回 403 或 404 状态码。如果仍能读取内容,说明屏蔽规则未生效,需检查 Nginx 配置

此外,runtime 目录的写入权限和伪静态规则也是常见陷阱。日志、缓存、模板编译均依赖 runtime 目录的可写权限,如果不可写,页面将直接报错或功能异常。URL 路由依赖伪静态规则转发请求,缺少该规则会导致所有链接返回 404。

  • 在【文件】管理器中找到 runtime 目录 → 右键 →【权限】→ 设置为 755,所有者和用户组均选择 www
  • 站点【设置】→【伪静态】→ 清空原有内容 → 粘贴以下 Nginx 规则:
    location / {
      try_files $uri $uri/ /index.php?$query_string;
    }
  • 无需重启 Nginx,保存配置后立即生效
来源:https://www.php.cn/faq/2787348.html
上一篇如何交换整型数组索引与值实现置换逆映射 下一篇ThinkPHP导入Excel上传环境配置及新手安装教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
列表遍历时动态判断阈值并返回相应文本
编程语言 · 2026-07-08

列表遍历时动态判断阈值并返回相应文本

遍历数值列表时,先筛选满足阈值的元素,再根据结果输出列表或友好提示。推荐使用列表推导式结合条件判断,注意边界用`>=`,空列表自动为假。也可用`any()`提前终止遍历,提升效率。此法简洁,避免显式循环,特别适合阈值筛选。

Maven项目中如何强制使用本地构建的依赖版本
编程语言 · 2026-07-08

Maven项目中如何强制使用本地构建的依赖版本

多模块开发中强制使用本地依赖的正确做法是使用-SNAPSHOT版本并配合`-U`参数强制更新,或重构为多模块项目统一管理生命周期。避免使用版本范围语法或手动复制JAR,确保构建行为可靠可重复。

Go语言net.Conn并发写安全与原子性保障解析
编程语言 · 2026-07-08

Go语言net.Conn并发写安全与原子性保障解析

Go标准库中net Conn支持并发方法调用,但Write()不保证原子性。多goroutine同时写入时,系统可能拆分数据包,导致内容交错,破坏消息边界。必须使用互斥锁或bufio Writer等显式同步机制确保写操作完整性,不可依赖系统调用本身的原子性。

Python在Windows系统中获取指定卷标U盘驱动器字母的方法
编程语言 · 2026-07-08

Python在Windows系统中获取指定卷标U盘驱动器字母的方法

使用Pythonwmi库通过Win32_Volume接口查询Windows系统中卷标为“TOSHIBA”的U盘盘符。需安装wmi和pywin32,注意大小写区分及多设备过滤。仅适用于Windows。

TP6.0消息已读功能基于Redis Bitmap未读计数方案
编程语言 · 2026-07-08

TP6.0消息已读功能基于Redis Bitmap未读计数方案

TP6 0中使用Redis位图实现消息已读标记,每条消息仅占一个比特,内存效率高。需将消息ID映射为连续偏移量,通过SETBIT和GETBIT操作。需提前维护用户ID到偏移量的映射表,注意键过期与驱动类型(phpredis与predis)问题。此方法内存极省,适合海量消息场景,且需确保偏移量唯一。