ThinkPHP 8.0运行报Class 'thinkApp' not found是因入口文件public/index.php第一行缺失自动加载语句;需确保首行为require DIR . '/../vendor/autoload.php';且文件置于public目录下。

刚下载ThinkPHP 8.0,运行就报Class 'thinkApp' not found,不是代码写错了,而是入口文件没对上框架新规则——public/index.php第一行缺失自动加载、路径写死、或根本没放在public目录下。
检查并修复入口文件第一行
打开项目根目录下的public/index.php,确认第1行是:require __DIR__ . '/../vendor/autoload.php';
这行必须在任何其他语句之前,包括
若该行存在但路径报错,说明vendor目录实际不存在。不要手动补autoload.php,先回到项目根目录执行composer install。
立即学习“PHP免费学习笔记(深入)”;
确认网站根目录指向public子目录
方法一:本地PHP内置服务器启动
必须在项目根目录(含think脚本、app/、config/、public/的那层)执行:php think run
不能进到public/里再运行,也不能在www/父级目录运行——否则think命令找不到框架核心,同样触发Class 'thinkApp' not found。
方法二:Web服务器部署(如宝塔、Apache、Nginx)
网站根目录必须设为your-project/public,不是your-project。设错会导致public/index.php无法被正确路由,PHP解析时连autoload.php都加载不到,错误堆栈甚至不会显示具体类名,只报500或空白页。
【关键前提】public/index.php文件本身必须存在且权限为644,所属用户与Web服务运行用户一致(如宝塔默认是www)
验证自动加载是否真正生效
第一步:在public/index.php最开头(die(class_exists('think\App') ? 'autoload OK' : 'App class not loaded');
第二步:通过浏览器或curl访问首页。若输出autoload OK,说明自动加载链通了;若仍报错或空白,证明vendor/autoload.php未被引入或路径错误。
第三步:若输出OK但后续仍报Class 'thinkApp' not found,请检查是否误将thinkApp写成thinkApp(少反斜杠)——TP8严格要求全限定名,new thinkApp()✅,new thinkApp()❌。
第四步:确认PHP CLI和Web环境使用的是同一套配置。运行php --ini看Loaded Configuration File路径,再对比phpinfo()中显示的配置文件是否一致。不一致时,Web端可能用着PHP 7.4的ini,而命令行显示的是8.2。



















