报错主因是项目结构、PHP环境或权限配置错误:Web服务器未指向public目录、PHP版本低于8.0、CLI与Web端PHP不一致、think脚本无执行权限或autoload未生效。

直接用 composer create-project 初始化项目,别手动生成目录或解压 ZIP;Web 服务器必须指向 public/ 目录,否则路由失效、静态资源 404、.env 可能被外部访问;PHP 版本需 ≥8.0(TP6),且 CLI 和 Web 使用的 PHP 必须一致。
为什么 php think 命令总报 “Command not found” 或 “Class not found”
这不是命令拼错,而是项目结构或加载链断裂。最常见原因有三个:
-
think文件不在当前工作目录下——必须在项目根目录(含think可执行脚本)执行,不是app/或public/ - Linux/macOS 下没加执行权限:
chmod +x think,否则 shell 拒绝执行 - Composer autoload 没生效:没运行过
composer install或create-project失败(比如没指定版本),导致vendor/autoload.php缺失或不完整
验证方式:在根目录运行 php -m | grep pdo 确认扩展已启用,再跑 php think version —— 成功则输出类似 v6.1.5,失败则立刻停在这一步排查。
Apache/Nginx 怎么配才让 public/ 成为 Web 根目录
这不是“建议”,是 ThinkPHP 单入口设计的硬性要求。配错会导致 .env 被浏览器直接下载、config/ 目录暴露、__ROOT__ 路径错乱。
立即学习“PHP免费学习笔记(深入)”;
- Apache:
DocumentRoot必须设为/path/to/your/project/public,且对应<directory></directory>块中启用AllowOverride All(支持.htaccess重写) - Nginx:
root指向/path/to/your/project/public,且fastcgi_param SCRIPT_FILENAME必须是$document_root$fastcgi_script_name(不是$root) - 本地开发偷懒法:
php -S localhost:8000 -t public/,注意-t public/不能漏,否则入口文件找不到
.env 不生效、数据库连不上、白屏无报错
ThinkPHP 6 的 .env 是启动早期一次性加载的,改完不重启进程、不清缓存就等于没改。
-
.env必须放在项目根目录(和think文件同级),不是public/或app/下 - 必须取消
APP_DEBUG=true的注释,否则所有异常被静默吞掉,只返回空白页或 500 - 数据库配置用
DB_HOST=127.0.0.1这种扁平格式,不是database.host;且它会覆盖config/database.php中同名项 - 修改后必须清空
runtime/cache/目录,并重启 PHP 进程(php think run要 Ctrl+C 再重跑,PHP-FPM 要sudo systemctl reload php-fpm)
最容易被忽略的一点:Windows 用户用 CMD 执行 php think 时,如果系统 PATH 里有多个 PHP,实际调用的可能是旧版本(如 7.4),而浏览器访问走的是集成环境里的 8.2 —— 用 where php 和 php -v 对比确认 CLI 版本是否一致。



















