必须用 composer create-project "topthink/think:^6.1" 安装 ThinkPHP 6+,因需完整项目骨架和 post-create-project-cmd 脚本;报 “could not find package” 主因是镜像未同步或本地源污染,应先 clear-cache 并重置为阿里云等国内镜像源。

composer create-project topthink/think 报 “could not find package”
这不是网络断了,是 Packagist 镜像没同步或本地源被污染。国内用户尤其高频出现。
先运行 composer clear-cache 清掉缓存;再检查当前源:composer config -g repo.packagist,输出必须是 https://packagist.org 或国内镜像地址(如 https://mirrors.aliyun.com/composer/)。若不是,重置:composer config -g repo.packagist https://mirrors.aliyun.com/composer/。
注意:TP6 不再维护 topthink/think 的 dev-main 分支,也不再默认推最新版——必须显式指定版本,否则可能拉到 TP5 或 TP8 的不稳定快照。
- 正确命令是:
composer create-project "topthink/think:^6.1" - 如果已失败过,删掉残留的
vendor/和composer.lock再重试 - 别用
composer require topthink/think—— 它只装代码进vendor/,不建app/、config/、public/等结构,必报Class 'think\App' not found
php think 命令执行失败:Permission denied 或 Class not found
本质不是框架问题,而是入口权限或加载路径卡住了。
Linux/macOS 下,think 是 PHP 脚本,首行有 #!/usr/bin/env php,但默认无执行权限。运行前必须:chmod +x think。Windows 用户不用改权限,但必须用 php think 调用,不能双击或直接运行 think 文件。
另一个常见原因是当前目录不对:php think 必须在项目根目录(即和 think 文件同级)执行,不是 public/,也不是 app/。
- 确认位置:
ls -l think看文件是否存在且权限含x - 确认 PHP CLI 版本:
php -v,TP6.1+ 要求 PHP ≥ 7.2;php --ini查 CLI 加载的php.ini,确保extension=mbstring、extension=curl等已启用 - 如果提示
Class 'think\App' not found,大概率是自动加载失效,运行composer dump-autoload强制重建
安装后访问 public/index.php 报 500 或空白页
TP6 强制要求 Web 服务器 root 指向 public/ 目录,这是硬性设计,不是可选项。错配会导致路由失效、静态资源 404、__ROOT__ 错乱,甚至类加载失败。
Apache 用户:虚拟主机配置里 DocumentRoot 必须设为 /path/to/your/project/public,且 .htaccess 生效需 AllowOverride All;Nginx 用户:root 指向 public/,且 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name —— 注意不是 $root。
- 开发阶段最稳方式:
php -S localhost:8000 -t public/,别漏掉-t public/ - 检查
public/index.php开头是否含require __DIR__.'/../vendor/autoload.php';—— 手动挪动过文件容易删掉这行 - 空白页大概率是
APP_DEBUG=false且没开错误报告,立刻在.env中加APP_DEBUG=true,再刷新
.env 文件不生效、数据库连不上
.env 只在应用初始化早期加载一次,改完不重启进程就无效。它必须放在项目根目录(和 think 同级),不能放 public/ 或 app/ 下。
Linux/macOS 还要检查权限:ls -l .env,避免是 root 创建、Web 进程用户(如 www-data)无读取权。Windows 一般无此问题,但要注意隐藏属性。
- 验证是否加载成功:在
app/common.php里加一行var_dump($_ENV['APP_DEBUG'] ?? 'not loaded'); - 改完
.env后,CLI 下跑php think run需 Ctrl+C 停掉再重起;Web 服务需 reload 或 restart - TP6 不支持运行时重载环境变量,别指望改完立刻生效
最容易被忽略的点是:PHP CLI 和 Web 使用的 php.ini 往往不同,WAMP/XAMPP 用户尤其要分别检查 php -m 和 phpinfo() 输出的扩展列表。一个开了 mbstring,另一个没开,就会导致 CLI 能跑 php think,Web 却报 Class not found。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











