ThinkPHP6.1如何部署到Linux_ThinkPHP6.1服务器部署【实战】

小伟酱_3317

小伟酱_3317

2026-06-02

399人浏览

原创

核心是web服务器根目录必须指向public/且.env权限与加载时机要卡准:documentroot需设为项目/public路径,.env须位于项目根目录并确保web进程可读,runtime目录需可写,否则90%的404、500、空白页等问题由此引发。

thinkphp6.1如何部署到linux_thinkphp6.1服务器部署【实战】

ThinkPHP6.1 部署到 Linux 服务器,核心就一条:public/ 必须是 Web 服务器的 DocumentRoot,且 .env 加载时机和权限必须卡准。其他所有报错——404、500、空白页、数据库连不上、路由不生效——90% 都卡在这两点上。

Web 服务器根目录必须指向 public/,不是项目根目录

TP6.1 强制将入口统一收束到 public/index.php,框架内部路径逻辑(如静态资源、路由解析、__ROOT__)全基于此推导。若 Nginx 或 Apache 的 root 指向项目根目录(比如 /var/www/html/tp6),就会直接暴露 .env、composer.json,且所有请求都绕过框架路由,返回 404 或原始 PHP 文件内容。

  • Nginx 配置中 root 必须写成完整路径 + /public,例如:root /var/www/html/tp6/public;
  • Apache 需确保 public/.htaccess 存在且生效;检查对应 <directory></directory> 块中 AllowOverride All 已启用
  • 宝塔面板建站时,“网站根目录”填的是 /var/www/html/tp6/public,不是 /var/www/html/tp6
  • 改完配置后,必须重启 Nginx/Apache 或点击宝塔「重载配置」,仅刷新浏览器无效

.env 文件不生效?先查加载时机和文件权限

.env 在 TP6.1 启动早期由 topthink/framework 的 EnvLoader 读取一次,之后全程缓存。它不会监听文件变化,也不会在 CLI 和 FPM 间共享状态。

Browser Setup (No-Root Linux)
Browser Setup (No-Root Linux)

在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...

下载
  • 文件名必须是 .env(不是 .env.example),且位于项目根目录(与 think 可执行文件同级)
  • Linux 下检查权限:ls -l .env,确保 Web 进程用户(如 www-data 或 nginx)有读取权限;常见错误是 root 创建后未改属主:chown www-data:www-data .env
  • 用 php think run 开发服务器时,每次改 .env 都必须 Ctrl+C 终止再重跑;FPM 模式下需重启 PHP-FPM 进程
  • 快速验证是否加载成功:在 app/common.php 第一行加 var_dump($_ENV['APP_DEBUG'] ?? 'not loaded');,输出 true 或 false 才算成功

多应用模式下域名绑定失败,别碰 config/app.php 的 domain_bind

TP6.1 多应用模式(app_multi = true)下,config/app.php 中的 'domain_bind' 配置完全被忽略。这是旧版单应用的遗留字段,框架启动时压根不读它。

  • 正确做法是在 public/index.php 入口文件、require __DIR__ . '/../vendor/autoload.php'; 之后、App::run() 之前,手动调用 \think\App::bind()
  • 例如:if ($_SERVER['HTTP_HOST'] === 'admin.example.com') { \think\App::bind('admin'); }
  • 绑定后,框架才会加载 app/admin/ 下的配置、路由、中间件;否则默认走 app/ 目录
  • 注意:子域名下的静态资源仍从 public/static/ 加载,static('css/app.css') 不会自动补前缀,需手动拼 /static/admin/css/app.css

伪静态(隐藏 index.php)规则必须匹配 Web 服务器类型

TP6.1 默认启用 URL 重写,但 Nginx 和 Apache 的实现机制不同,混用会导致 404。宝塔「URL 重写」选「thinkphp」只生成 Nginx 规则,对 Apache 无效。

  • Nginx:确认站点配置中已启用「URL 重写 → thinkphp」,规则本质是把非静态请求转发给 index.php?s=
  • Apache:确保 public/.htaccess 存在且内容含 RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L];若仍 404,检查 httpd.conf 中对应目录的 AllowOverride 是否为 All
  • 调试技巧:临时在 public/index.php 顶部加 die($_SERVER['REQUEST_URI']);,看实际进来的 URL 是带 index.php 还是纯路径,再反推规则是否生效

部署中最容易被跳过的点是:没开 APP_DEBUG=true 就直接上线,结果空白页连错误都看不到;或者 runtime 目录不可写,导致缓存、日志、模板编译全失败——这个目录的权限比 .env 还关键,755 不够,得 775 或 777(视 Web 用户组而定)。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9704

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5821

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2055

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3628

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4334

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3391

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4817

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3762

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11762

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程