class 'think\app' not found 的根本原因是 vendor/autoload.php 未被正确引入,常见于入口文件路径错误、web 根目录未指向 public/、cli 下扩展缺失或 think 命令文件缺失/无权限;第三方库必须用 composer require 安装,禁用手动复制;多项目共用 vendor 会导致 dir 路径错乱;页面空白需开启 display_errors 并检查 .env、配置覆盖及日志路径。

Class 'think\App' not found 是自动加载根本没触发
这个错误不是类文件丢了,是 vendor/autoload.php 压根没被 require 进来。最常见于入口文件 public/index.php 第一行写错路径:require __DIR__ . '/../vendor/autoload.php'; 多一个点、少一个斜杠、写成 ./../vendor 都会失败。Web 服务器根目录也必须指向 public/,否则相对路径解析全乱。用终端进项目根目录执行 php think,能输出命令列表才说明 CLI 下 autoload 正常;若报错,先查 php --ini 看 CLI 加载的 php.ini 是否启用了 json、mbstring 等扩展。
php think version 报错或无输出?检查 think 文件是否存在且可执行
think(Linux/macOS)或 think.bat(Windows)是 TP5 的命令行入口,它不在 vendor/ 里,而是项目根目录下由 composer create-project 自动写入的。没有它,php think version 必然失败。Linux/macOS 下还要确认权限:chmod +x think;Windows 下若双击 think.bat 闪退,说明 PHP 路径没配对,改用命令行执行更可靠。运行 php think 后看命令列表里有没有 version,没有就说明框架未完整加载,别急着试 run 或 server:run。
第三方库如 PhpSpreadsheet 引入后 Class not found?必须走 composer install
TP5.1+ 彻底移除了 Loader::import()、import() 和 Vendor() 助手函数。手动把库文件丢进 vendor/ 目录下无效——Composer 不认。正确做法是:在项目根目录执行 composer require phpoffice/phpspreadsheet,然后在代码里用命名空间调用,比如 use PhpOffice\PhpSpreadsheet\IOFactory;。检查 vendor/composer/installed.json 是否有对应条目,没有就说明安装没成功。别跳过 composer.lock,它锁定了版本兼容性,删了它再装可能引入不兼容依赖。
vendor 目录被多个项目共用?autoload.php 里的 __DIR__ 会硬编码错路径
多个 TP5 项目共享一个 vendor/(比如通过软链接、全局 COMPOSER_VENDOR_DIR 或手动复制)会导致 vendor/autoload.php 中的 __DIR__ 指向错误路径,PSR-4 映射直接失效。验证方式:进项目根目录执行 php -r "echo __DIR__;",和 vendor/autoload.php 里实际写的 __DIR__ 对比是否一致。解决方法:删掉所有项目的 vendor/ 和 composer.lock,清缓存 composer clear-cache,再逐个项目执行 composer install --no-dev --optimize-autoloader,最后补一句 composer dump-autoload -o 强制重写映射文件。
页面空白、500 错误但无提示?错误被静默吞掉了
TP5 默认关闭错误显示,只返回 HTTP 500。必须主动打开才能看到真实报错。在 public/index.php 的 <?php 后立刻加两行:ini_set('display_errors','1'); error_reporting(E_ALL);。同时确认 .env 中 APP_DEBUG=true 生效,且没被 config/app.php 里硬编码的 'app_debug' => false 覆盖。别只盯 runtime/log/,还要查 PHP 错误日志路径(php -i | grep error_log)、Nginx/Apache 的 error log,以及 runtime/ 目录是否可写(属主需匹配 Web 进程用户,如 www-data)。
真正卡住人的往往不是“类找不到”,而是 autoload.php 根本没加载、或加载了但映射路径错了——这两步验证必须手动做,不能只信命令跑完就万事大吉。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











