商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > ThinkPHP部署安装全过程怎么完成 图文思路讲解

ThinkPHP部署安装全过程怎么完成 图文思路讲解

  发布于2026-07-15 阅读(0)

扫一扫,手机访问

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 myappmyapp 换成你的项目名)

但上传服务器时,千万别直接把整个文件夹拖过去。本地 vendor/runtime/ 目录是开发环境生成的,不能直接丢到线上。正确的做法是只上传这些内容:

  • composer.jsoncomposer.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。如果跳转了,说明伪静态没生效,再检查一遍配置。

ThinkPHP部署安装全过程怎么完成 图文思路讲解

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

本文转载于:https://www.php.cn/faq/2823763.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注