ThinkPHP 6 的部署,其实就三步:环境配好、入口指对、规则写稳。这三步但凡跳过一个,你大概率会撞上 Class 'thinkApp' not found 或者 404 页面。别慌,不是代码写错了,是运行链条在中间断了。
环境准备:PHP 和 Composer 一个都不能少
ThinkPHP 6+ 要求 PHP 版本至少 7.2.5,推荐直接用 7.4 或 8.0+,性能更好。而且必须通过 Composer 来安装,别想着下载 ZIP 包或者 Git clone 就完事——那样会丢失自动加载机制,后续一堆麻烦。
先把环境检查一遍:
- 终端跑
php -v,看看有没有输出版本号。没反应?先装 PHP,并确保加到系统 PATH 里。 - 再跑
composer -v,确认 Composer 已就位。如果没装,去官网下载安装脚本,或者直接用这条命令一把梭:curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - 国内用户别忘了换源,否则下载依赖能急死人:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
建项目,但别一股脑上传
本地用 Composer 创建项目很简单:
composer create-project topthink/think myapp(myapp换成你的项目名)
但上传服务器时,千万别直接把整个文件夹拖过去。本地 vendor/ 和 runtime/ 目录是开发环境生成的,不能直接丢到线上。正确的做法是只上传这些内容:
composer.json与composer.lock(依赖清单)app/、config/、route/、view/等业务目录public/整个目录(里面包含入口文件index.php)
上传前,删掉本地的 vendor/ 和 runtime/,它们不该进 Git,也不该直接上传到服务器。
关键一步:Web 根目录必须指向 public/
这一步是八成部署失败的罪魁祸首。ThinkPHP 6+ 是单入口架构,所有请求都要经过 public/index.php 来调度。如果你把站点根目录设成了项目根目录,等于把钥匙扔在了门外。
具体怎么配?看你的服务器环境:
- 宝塔面板:站点设置 → “网站目录” 改为
/www/wwwroot/myapp/public(注意不是项目根目录) - Nginx:配置里写
root /www/wwwroot/myapp/public;,而不是/www/wwwroot/myapp - Apache:虚拟主机里设
DocumentRoot "/www/wwwroot/myapp/public",同时确保对应的块包含AllowOverride All
验证方法很简单:访问 http://你的域名/ 能看到欢迎页;访问 http://你的域名/app 应该返回 404——这说明 app 目录不会被 Web 直接访问,安全到位。
上线前必跑的三行命令
文件上传完了,别急着刷新页面。先 SSH 连上服务器,在项目根目录(即包含 composer.json 的那一层)执行以下三行:
composer install --no-dev --optimize-autoloader—— 安装生产环境依赖,生成高效的自动加载映射,速度提升明显。chmod -R 755 runtime/(Linux 环境)—— 确保runtime/目录可写,日志、缓存、模板编译全靠它。php think clear—— 清空运行时缓存,避免旧配置干扰新代码。
顺手检查一下:php -m | grep opcache 有输出,并且 opcache.enable_cli=1 已启用,否则 php think 命令可能失效。
伪静态规则:必须用 ThinkPHP 专用的
ThinkPHP 的路由依赖 s= 参数传递 PATH_INFO,所以不能套用 Lara vel 或 WordPress 的规则。否则首页能打开,子页面全 404。
- Nginx:在
server{}块内添加以下规则:location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } } - Apache:确认
public/目录下的.htaccess文件存在且生效(前提是开启了mod_rewrite)。
测试方法:访问 http://域名/index/index 应该正常显示页面,而不是跳转到 /index.php/index/index。如果跳转了,说明伪静态没生效,再检查一遍配置。

三步闭环走完,基本上就不会有那些莫名其妙的报错了。记住:环境、入口、规则,缺一不可。