离线环境必须删除 composer.lock 和 vendor 后用 --ignore-platform-req=php 重装,仅跳过 PHP 版本检查;若缺扩展则明确指定 --ignore-platform-req=ext-gd 等,禁用 --ignore-platform-reqs。

离线环境里不能联网查 PHP 版本,得靠本地确认
离线环境最大的陷阱是:你根本不知道自己缺哪个 ext-,或者 php -v 输出的版本号是否被 Composer 识别为“不满足”。必须先在能连网的机器上跑一遍 composer install -v,记下完整报错,比如:Your PHP version 8.2.10 does not satisfy that requirement. 或 The requested PHP extension ext-gd is missing from your system.。离线时没法动态探测,只能靠这个原始错误反推要忽略什么。
只用 --ignore-platform-req=php,别碰 --ignore-platform-reqs
离线环境扩展缺失风险极高——你没法临时装 ext-redis 或 ext-zip,但盲目加 --ignore-platform-reqs(带 s)会让 Composer 跳过所有扩展检查,结果 vendor 里可能真没加载 Redis 类,运行时直接 Fatal error: Class 'Redis' not found。
-
composer install --ignore-platform-req=php:只绕过 PHP 版本声明,保留所有ext-校验,最安全 -
composer install --ignore-platform-req=ext-gd --ignore-platform-req=ext-mbstring:明确知道缺哪几个,就只跳过这几个,拼写必须和php -m输出一致(如ext-curl,不是curl) -
--ignore-platform-reqs(带s)在离线环境≈埋雷:它不会让缺失的扩展 magically 出现,只是假装有
离线构建前必须删 composer.lock,否则无效
如果旧 composer.lock 是在 PHP 7.4 环境下生成的,而你现在用 PHP 8.2 离线安装,即使加了 --ignore-platform-req=php,Composer 仍可能因 lock 文件中记录的包版本本身不兼容新 PHP(比如用了 match 表达式)而失败。这不是平台检查问题,而是依赖包代码层不兼容。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 离线安装前,务必删除
composer.lock和vendor/ - 再执行
composer install --ignore-platform-req=php,让 Composer 在当前 PHP 版本下重新解出兼容的包版本 - 若需保留部分包版本,改用
composer update --lock(它只更新 lock 文件结构,不重算依赖),但前提是 lock 文件本身没坏
config.platform 在离线环境几乎没用
有人想在 composer.json 里写 "platform": {"php": "7.4.0"} 来“伪装”环境,这在离线环境基本失效:Composer 2.2+ 虽支持该配置,但它依赖于网络或本地缓存来校验包元数据,而离线时无法获取远程包的 composer.json 中真实声明的 require,容易导致 autoload 映射漏掉关键类,vendor/autoload.php 加载失败。
真正能落地的只有命令行参数——因为它是强制覆盖,不查远程、不依赖缓存,只要参数拼对,就能过安装阶段。复杂点在于:你得把报错信息带全,一个字母都不能错;少一个 =,或把 ext-gd 写成 gd,参数就静默失效。

















