ThinkPHP项目搭建失败主因是环境、配置或操作顺序偏差,关键在PHP版本与扩展、Composer镜像、入口路径及Web服务器根目录指向public/四大节点。

PHP版本和扩展不达标
ThinkPHP 6.x 要求 PHP ≥ 7.1(推荐 7.3–8.1),且必须启用 json、mbstring、xml、curl、openssl 这些基础扩展。报错如 “ext-json missing” 或 “your PHP version does not satisfy that requirement”,基本就是这个原因。
- 运行
php -v确认 CLI 使用的 PHP 版本,别只看网页 phpinfo() - 运行
php -m检查扩展是否已加载;缺哪个就去对应 php.ini 中开启(Linux 是extension=curl,Windows 是extension=php_curl.dll) - 注意:WAMP/XAMPP 的 Web 环境和命令行可能用两套 php.ini,用
php --ini查清楚 CLI 加载的是哪一份
Composer 安装卡住或依赖错乱
国内直连 Packagist 官方源基本不通,容易超时、连接拒绝或拉到旧版冲突依赖。这不是网络问题,是源没换对。
- 执行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/切阿里云镜像 - 安装前删掉项目根目录下的
vendor/和composer.lock,再跑composer install --no-dev --optimize-autoloader - 别用
composer update替代 install——它会重新解析整棵树,容易降级或引入不兼容包 - Windows 下避免在 Git Bash/WSL 里执行,改用 CMD 或 PowerShell,避免兼容层干扰
入口路径和自动加载没走通
访问页面报 Class 'think\App' not found,说明 Composer 自动加载根本没生效,不是类文件丢了,是入口断了。
- 确认
public/index.php第一行是require __DIR__ . '/../vendor/autoload.php'; - 浏览器必须访问
http://localhost/your-project/public/,不能直接访问项目根目录 - 命令行进项目根目录,运行
php think,能输出命令列表才代表 autoload 正常 - 检查
vendor/autoload.php是否真实存在、权限可读,且没被 open_basedir 限制
Web 服务器配置没对准 ThinkPHP 结构
ThinkPHP 6+ 强制要求 web 根目录指向 public/,否则路由失效、静态资源 404、甚至源码泄露。
立即学习“PHP免费学习笔记(深入)”;
- Apache:虚拟主机中
DocumentRoot必须设为/path/to/project/public,并确保AllowOverride All - Nginx:
root指令必须写成root /path/to/project/public;,不是项目根目录 - 宝塔:新建站点后,在「网站设置 → 根目录」手动改为
public子目录 - 伪静态规则不能套 Laravel 或 WordPress 的模板,ThinkPHP 需要支持
s=参数的 rewrite 规则(Nginx 示例:if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; })



















