一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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

时间:2026-07-27 08:04:59 编辑:袖梨 来源:一聚教程网

ThinkPHP6部署必须走三步闭环:环境(PHP≥7.2.5+Composer)、入口(Web根目录指向public/)、规则(专用伪静态+runtime可写),缺一即报Class 'thinkApp' not found或404。

ThinkPHP部署安装不是“复制粘贴就完事”,关键在三步闭环:环境对得准、入口指得对、规则配得稳。跳过任意一环,都会报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 create-project topthink/think myappmyapp可自定义)
  • 删掉本地 vendor/runtime/ 目录——它们不该进Git,也不该直接上传
  • 只上传以下内容到服务器:
    composer.jsoncomposer.lock
    app/config/route/view/ 等业务目录
    public/ 整个目录(含 index.php

Web服务器根目录必须指向public

这是八成部署失败的根源。ThinkPHP 6+ 是单入口架构,所有请求必须经 public/index.php 调度。把项目根目录设错,等于把钥匙扔在门外。

立即学习“PHP免费学习笔记(深入)”;

  • 宝塔面板:站点设置 → “网站目录” 改为 /www/wwwroot/myapp/public(不是项目根目录)
  • Nginx:配置中写 root /www/wwwroot/myapp/public;,不是 /www/wwwroot/myapp
  • Apache:虚拟主机里设 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 命令会失效)。

Nginx/Apache伪静态规则要专用

ThinkPHP路由依赖 s= 参数传递PATH_INFO,不能套用Laravel或WordPress的规则,否则首页能开、子页面404。

  • Nginx(放在 server{} 块内):
    location / {<br>  if (!-e $request_filename) {<br>    rewrite ^(.*)$ /index.php?s=$1 last;<br>  }<br>}
  • Apache:确认 .htaccesspublic/ 下存在且生效(需开启 mod_rewrite
  • 测试方法:访问 http://域名/index/index 应正常显示,而非跳转到 /index.php/index/index

热门栏目