答案:应调高http-timeout至600并换用阿里云镜像源https://mirrors.aliyun.com/composer,因create-project卡在downloading是http请求超时所致,需全局或临时设置composer_http_timeout=600,且镜像配置末尾不可带斜杠。

create-project 卡在 Downloading https://?该调 http-timeout
这是最常见的情况:执行 composer create-project laravel/laravel myapp 后,卡在 Downloading https://repo.packagist.org/... 或镜像源地址,最终报 cURL error 28、Could not fetch packages.json。根本不是 Laravel 慢,而是 Composer 发起的 HTTP 请求等不及响应。
http-timeout 控制所有下载类请求(元数据、ZIP 包)的最大等待秒数,默认仅 300 秒。大型框架如 Laravel 13.2.0 的 dist 包常超 50MB,弱网下很容易超时。
- 项目级无效——
create-project还没生成项目目录,composer.json不存在,无法写入配置 - 必须用全局或临时方式:运行
composer config --global http-timeout 600,或直接COMPOSER_HTTP_TIMEOUT=600 composer create-project laravel/laravel myapp - 别漏 PHP 底层限制:CLI 模式下
default_socket_timeout若为 60(查法:php -i | grep default_socket_timeout),也会提前掐断;可临时绕过:php -d default_socket_timeout=600 $(which composer) create-project laravel/laravel myapp
create-project 卡在 Installing dependencies 或 Killed?该调 process-timeout
一旦 ZIP 解压完成、进入 Installing dependencies 阶段,就不再走 HTTP 流程,而是启动子进程执行 git clone、unzip、php artisan key:generate 等操作。此时超时由 process-timeout 控制,默认 300 秒,在 CI 或低配机器上极易触发 The process timed out 或直接被系统 Killed(无明确错误,只中断)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局
composer config --global process-timeout 1800在新版中已失效,别信老教程 - 真正有效的全局方式是设环境变量:
export COMPOSER_PROCESS_TIMEOUT=1800(Linux/macOS),Windows 需在系统属性里加环境变量 - 单次命令最稳妥:
COMPOSER_PROCESS_TIMEOUT=1800 composer create-project laravel/laravel myapp - 注意命令行参数名:
--timeout=1800是 HTTP 超时(等价于http-timeout),而--process-timeout=1800在create-project中不被识别——必须用环境变量
为什么换镜像源比调超时更关键
调高 http-timeout 和 process-timeout 只是兜底,不能解决源头问题。国内用户用默认 packagist.org,DNS 解析慢、TLS 握手卡顿、CDN 节点异常都会导致“假超时”。阿里云镜像(https://mirrors.aliyun.com/composer)响应稳定且同步及时,实测可将 create-project 总耗时从 8 分钟压到 90 秒内。
- 正确设置镜像:
composer config --global repo.packagist composer https://mirrors.aliyun.com/composer(末尾不能带斜杠) - 验证是否生效:
composer config --global repo.packagist输出应为完整 URL,不是{"type": "composer", "url": "..."}这种结构 - 若仍失败,加
--no-cache跳过损坏缓存:COMPOSER_HTTP_TIMEOUT=600 COMPOSER_PROCESS_TIMEOUT=1800 composer create-project laravel/laravel myapp --no-cache
容易被忽略的底层瓶颈
超时只是表象,背后常藏真实资源限制。比如 proc_open(): fork failed - Cannot allocate memory 不是超时,而是系统 ulimit -u(最大进程数)或内存不足;又或者私有 Git 仓库启用了 SSH 密钥认证但 agent 未加载,导致 git clone 卡在交互式密码提示上,process-timeout 到期后直接 kill。
- 检查内存:运行
free -h,确保可用内存 ≥ 1GB;CI 环境建议分配 2GB+ RAM - 排查 Git 行为:加
-v参数看最后卡在哪条命令,如果是git clone git@xxx,确认ssh-agent已启动且密钥已添加 - 禁用并行下载降低压力:
composer config --global concurrent.http 1,尤其在高丢包网络下有效










