composer如何安装ThinkPHP框架_composer部署TP项目详细步骤【指南】

12次阅读

composer安装Thinkphp需明确版本与环境:TP6要求PHP≥7.1并启用curl、mbstring、openssl、json扩展,TP8则需PHP≥8.1;必须用create-project拉取官方骨架而非仅framework包,并配置URL重写及自动加载。

composer如何安装ThinkPHP框架_composer部署TP项目详细步骤【指南】

Composer 安装 thinkphp 框架不是「一键下载即用」的过程,而是要明确版本、约束环境、处理自动加载与入口路径——直接运行 composer create-project 很可能生成一个无法访问的空壳项目。

确认 PHP 版本与扩展是否满足 TP 要求

ThinkPHP 6.x(当前主流)要求 PHP >= 7.1 且必须启用 curlmbstringopenssljson 扩展;TP 8.x(2024 年起逐步推广)则强制要求 PHP >= 8.1。若 php -v 显示为 7.4 或 8.0,却想装 TP 8,会卡在依赖解析阶段,报错类似:Conclusion: don't install topthink/framework v8.0.0

  • 执行 php -m | grep -E "curl|mbstring|openssl|json" 验证扩展是否已加载
  • windows 用户注意:XAMPP/MAMP 默认禁用 mbstring,需手动编辑 php.ini 取消注释 extension=mbstring
  • 使用 docker 的话,基础镜像不能选 php:8.0-cli,应改用 php:8.1-apache 或更高

用 create-project 创建可运行的 TP 项目(非裸框架)

composer create-project 是唯一推荐方式,但必须指定带完整 Web 入口和配置的官方骨架(skeleton),而非直接拉 topthink/framework 包——后者只是核心库,没有 public/index.php、没有 app 目录结构,也无法响应 http 请求。

  • 安装 TP 6.1(LTS 稳定版):
    composer create-project topthink/think tp6 --prefer-dist "6.1.*"
  • 安装 TP 8.0(最新版):
    composer create-project topthink/think tp8 --prefer-dist "8.0.*"
  • 命令末尾的 --prefer-dist 强制走压缩包安装,比 --prefer-source 快且不拉 git 历史
  • 生成的目录名(如 tp6)不能含中文或空格,否则 Composer 自动加载器可能失效

启动内置服务器前必须修改 public/.htaccess 或配置 nginx

ThinkPHP 强依赖 URL 重写,public/ 是唯一允许 Web 访问的目录。直接双击打开 public/index.php 会报错 undefined index: SERVER_NAME;用 php -S 启动时若未指定路由器文件,所有请求都 404。

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

  • 本地快速验证:进入项目根目录后运行
    php think run

    (TP 6.1+ 内置命令,等价于 php -S localhost:8000 -t public router.php

  • 若手动用 php -S,必须显式传入 TP 提供的路由代理文件:
    php -S localhost:8000 -t public public/router.php
  • Apache 用户确保 public/.htaccess 存在且 AllowOverride All 已开启;Nginx 用户需在 server 块中加入:
    location / {
    if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php?s=$1 last;
    }
    }

vendor/autoload.php 不自动加载 app/ 下的类?检查 composer.json autoload 配置

TP 项目默认把 app/ 目录映射进 PSR-4 自动加载,但该配置藏在 composer.jsonautoload 字段里。若你手动删过 app/ 或重命名了模块目录(比如改成 src/),Composer 就找不到控制器、模型类,报错 class 'appcontrollerIndex' not found

  • 检查 composer.json 中是否有如下段落:
    "autoload": {
    "psr-4": {
    "app\": "app/"
    }
    }
  • 修改后必须执行 composer dump-autoload 刷新映射,不能只改 JSON 就完事
  • TP 8 开始支持多应用模式,若启用了 APP_MULTI,autoload 应改为 "app\" : "app/" + "appcommon\" : "app/common/" 等多行

最常被跳过的动作是运行 composer dump-autoload 和漏配 Web 服务器重写规则——这两步一缺,页面就空白或 500,但错误日志里往往只显示「No input file specified」这类误导信息。

text=ZqhQzanResources