ThinkPHP6部署必须走三步闭环:环境(PHP≥7.2.5+Composer)、入口(Web根目录指向public/)、规则(专用伪静态+runtime可写),缺一即报Class 'thinkApp' not found或404。
ThinkPHP部署安装不是“复制粘贴就完事”,关键在三步闭环:环境对得准、入口指得对、规则配得稳。跳过任意一环,都会报Class 'thinkApp' not found或404——问题不在代码,而在运行链断在了中间。
ThinkPHP 6+ 要求 PHP ≥ 7.2.5(推荐 7.4 或 8.0+),且必须通过 Composer 安装。别用下载ZIP包或Git clone,那会漏掉自动加载机制。
php -v 确认版本;若无输出,先装PHP并加入系统PATHcomposer -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 create-project topthink/think myapp(myapp可自定义)vendor/ 和 runtime/ 目录——它们不该进Git,也不该直接上传composer.json 与 composer.lockapp/、config/、route/、view/ 等业务目录public/ 整个目录(含 index.php)这是八成部署失败的根源。ThinkPHP 6+ 是单入口架构,所有请求必须经 public/index.php 调度。把项目根目录设错,等于把钥匙扔在门外。
立即学习“PHP免费学习笔记(深入)”;
/www/wwwroot/myapp/public(不是项目根目录)root /www/wwwroot/myapp/public;,不是 /www/wwwroot/myapp
DocumentRoot "/www/wwwroot/myapp/public",并确保对应 <Directory> 块含 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路由依赖 s= 参数传递PATH_INFO,不能套用Laravel或WordPress的规则,否则首页能开、子页面404。
server{} 块内):location / {<br> if (!-e $request_filename) {<br> rewrite ^(.*)$ /index.php?s=$1 last;<br> }<br>}
.htaccess 在 public/ 下存在且生效(需开启 mod_rewrite)http://域名/index/index 应正常显示,而非跳转到 /index.php/index/index