应优先切换阿里云镜像源(composer config -g repo.packagist composer https://mirrors.aliyun.com/composer,末尾无斜杠),并设process-timeout=600、执行composer clear-cache;若输出仍含packagist.org或旧地址,说明镜像未生效。

Composer 安装 ThinkPHP 卡住或超时,不是 TP 本身有问题,而是默认配置和国内网络环境严重不匹配——换镜像源 + 调超时 + 清缓存这三步做完,90% 的失败直接消失。
怎么确认是镜像源没切对
执行 composer config -g repo.packagist,输出里如果还含 "url": "https://packagist.org/" 或空、404、旧地址(如 phpcomposer.com),就说明镜像根本没生效。阿里云正确写法是:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer(注意末尾不能带斜杠)。已停用的 Laravel China 镜像(laravel-china.org)和 phpcomposer.com 在 2025 年底起全部不可用,继续用会静默 fallback 到官方源,等于白配。
为什么调了超时还是卡在 Downloading
-
process-timeout控制整个命令生命周期,设太低(默认 300)会导致大包下载中途被 kill,推荐全局设为600:运行composer config -g process-timeout 600 -
http-timeout影响单次请求,Composer 2.2+ 已将其合并进process-timeout,不用单独设;但若用 CI 环境,更稳妥的是加环境变量:COMPOSER_PROCESS_TIMEOUT=600 - 别设超过
7200:Composer 硬编码限制,超过会被强制回退到 300 秒 - 真正卡住常是 IPv6 fallback 导致的“假死”:Linux/macOS 加
COMPOSER_IPV4=1,Windows 在系统环境变量中添加该键值
安装 ThinkPHP 时哪些参数能跳过耗时环节
ThinkPHP 项目依赖多、autoload 扫描深,尤其在 WSL2、Docker for Mac 或 NTFS 挂载卷上,Generating autoload files 阶段极易 I/O 卡死。临时绕过可大幅提速:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 跳过插件和脚本:
composer install --no-plugins --no-scripts - 跳过 autoload 生成:
composer install --no-autoloader,装完再补:composer dump-autoload -o - CI/CD 中务必加:
--no-interaction --no-progress --prefer-dist,避免交互等待和进度条 IO - 如果之前失败过,删掉残留的
vendor/和composer.lock再重试,旧缓存可能指向失效源
CI/CD 里最容易忽略的配置点
流水线每次启动新容器,composer config -g 写入的是容器内临时 $HOME,重启即丢。必须显式固化 COMPOSER_HOME,比如在 GitLab CI 中加:
before_script: - export COMPOSER_HOME=/root/.composer - composer config -g repo.packagist composer https://mirrors.aliyun.com/composer - composer config -g process-timeout 600
否则你看到的“配置成功”只是当次 shell 有效,下一阶段就失效。另外,parallel-downloads 推荐设为 10(非越高越好),设成 20 可能触发 DNS 或临时文件竞争错误。










