该错误源于某依赖包在 composer.json 中声明了仅支持64位PHP,而非Composer自身问题;常见于ext-gmp、ramsey/uuid或spatie/browsershot等包。
这个错误不是 Composer 本身的问题,而是你正在安装的某个包(比如 ext-gmp 相关扩展、ramsey/uuid 某些版本、或某些二进制依赖如 spatie/browsershot)在 composer.json 的 require 或 platform 配置里显式声明了 "php": ">=8.1.0, 类似约束,或其依赖的扩展(如 gmp、bcmath)在 32 位 PHP 下无法正常加载 —— Composer 在解析依赖时提前校验失败。
别猜,直接用 PHP 自带函数验证:
php -r "echo PHP_INT_SIZE === 8 ? '64-bit' : '32-bit'; echo PHP_EOL;"
如果输出 32-bit,那问题根源就在这里。常见于:
不推荐长期使用,但能快速验证是否真为位数问题:
--ignore-platform-req=php 跳过 PHP 版本+位数校验:composer install --ignore-platform-req=php
composer install --ignore-platform-reqs
正常运行需要 64 位整数的逻辑(比如大 UUID 运算、高精度时间戳),只是绕过安装阶段报错这才是稳定方案。操作取决于你的系统:
brew uninstall php@8.2 && brew install --cask php@8.2(新版 Homebrew 默认装 64 位;若仍不对,检查
arch 输出是否为 arm64 或 x86_64)php:8.2-cli(官方镜像全为 amd64/arm64),而非 php:8.2-cli-i386(极少见);检查 docker info | grep Architecture
切完后务必运行 php -v 和前面的 PHP_INT_SIZE 检查双重确认。很多问题表面是 Composer 报错,实际是 PHP 运行时环境没对齐,尤其在 CI/CD 流水线里容易被忽略。