composer安装thinkphp应使用create-project而非require,它会生成完整项目结构;需配置app_debug=true、时区和runtime目录权限,否则框架静默失效。

Composer 安装 ThinkPHP 不需要单独“初始化 TP 框架”,composer create-project 一步到位,后续手动改配置才是关键。
用 create-project 直接拉取完整 TP 项目
ThinkPHP 是一个框架项目(不是纯库),不能靠 composer require topthink/think 加到已有项目里——那样只会装个空壳,缺路由、入口、命令行工具等核心结构。
- 正确做法是:在空目录下运行
composer create-project topthink/think,它会自动下载骨架、安装依赖、生成app/public/等标准目录 - 想指定版本?加版本号后缀,比如
composer create-project topthink/think:^8.0(注意^8.0和8.0.*行为不同,前者允许升级到8.9.9,后者只锁小版本) - 如果卡在
Cloning into...或提示github rate limit,说明 Composer 正在从 GitHub 拉源码包——换国内镜像源可解:composer config -g repo.packagist composer https://packagist.phpcomposer.com(注意该镜像已停,推荐用https://packagist.laravel-china.org或阿里云源)
composer install 和 create-project 的本质区别
很多人在已有项目里跑 composer install,结果 TP 不工作——因为 install 只读 composer.lock 装依赖,不生成项目结构;而 create-project 是“项目级初始化”,会执行 post-create-project-cmd 脚本,比如自动生成 runtime/ 目录、复制 .env.example。
- 如果你删了
vendor/想重装,应该用composer install(前提是已有composer.lock) - 但如果你根本没运行过
create-project,直接composer install会失败:缺少composer.json中定义的 autoload 配置,index.php里的require __DIR__.'/../vendor/autoload.php';会找不到文件 - TP 8 的
composer.json默认启用了"optimize-autoloader": true,本地开发时可关掉(改成false),避免修改类后要反复跑composer dump-autoload
安装完必须改的三处配置
刚拉下来的 TP 默认是调试关闭、错误不显示、日志写入失败——你访问首页空白或 500,大概率卡在这几处。
立即学习“PHP免费学习笔记(深入)”;
- 改
.env:确保APP_DEBUG=true,LOG_LEVEL=debug,否则错误全被吞掉,连Whoops都不出现 - 改
config/app.php中的'default_timezone' => 'Asia/Shanghai',否则date()、日志时间、缓存过期都可能错 8 小时 - 检查
runtime/目录权限:Linux/macOS 下 Web 服务器用户(如www-data或_www)必须有写权限,否则模板编译、日志、缓存全挂;Windows 下一般没问题,但若用 Docker 则需映射并设好 uid/gid
真正麻烦的从来不是“怎么装”,而是装完发现 APP_DEBUG=true 没开、runtime/ 不可写、或者用了旧版 Composer 导致 autoload 生成异常——这些点不报具体错误,只让整个框架静默失效。











