是,大概率是系统时间偏差超15分钟所致;Composer 2.2+ 默认校验签名时间戳,本地时间与Packagist服务器时间差超±900秒即报“Signature verification failed”,需用timedatectl等工具校准系统时钟。

Composer install 报错 “Signature verification failed” 是时钟问题吗?
大概率是。Composer 从 2.2 开始默认启用签名验证(signatures),要求包元数据(如 composer.lock 或仓库响应)的 created 时间戳与本地系统时间偏差不超过 15 分钟,否则直接拒绝安装并抛出 Signature verification failed 错误——这不是证书过期,也不是网络中间人攻击,就是系统时间“不准”。
怎么快速确认是不是时钟偏移?
运行这条命令比看日志更直接:
date -Iseconds && curl -s https://repo.packagist.org/packages.json | jq -r '.meta.created'
对比两行输出的时间(ISO 8601 格式)。如果差值超过 ±900 秒(15 分钟),就坐实了问题。注意:curl 响应里的 created 是 Packagist 服务器时间,可信;date 显示的是你本地时间,不可信(如果没同步过)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
临时绕过签名校验(仅调试用)
不推荐长期关闭,但排查时可快速验证:
- 加参数运行:
composer install --no-signature或composer update --no-signature - 全局禁用(危险!):
composer config -g security.signature false—— 这会让所有项目跳过校验,别在 CI 或生产环境用 - 注意:
--no-signature不影响包下载完整性(SHA256 仍校验),只跳过 GPG 签名验证
正确修复方式:同步系统时钟
这才是一劳永逸的办法。不同系统操作不同:
- Linux(systemd):
sudo timedatectl set-ntp true,然后timedatectl status看是否显示System clock synchronized: yes - macOS:
sudo sntp -sS time.apple.com(或用systemsetup -setnetworktimeserver time.apple.com启用自动同步) - Windows WSL2:
sudo service ntp stop && sudo ntpdate pool.ntp.org,再重启ntpd - Docker 容器内:宿主机时钟不同步会直接影响容器,必须先修宿主机,不要在容器里硬改
/etc/localtime
改完立刻重试 composer install,不再报签名错误才算真正解决。很多人修完时钟忘了重启终端或 Composer 进程缓存,结果以为没生效——其实只是旧进程还在读缓存时间戳。

















