You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片MacBook中PHP的ext-sodium扩展AES-256-GCM不可用问题咨询

问题根因

你遇到的并非M1硬件不支持AES-256-GCM,而是旧版本libsodium(PHP sodium扩展的底层依赖)对ARM64架构的AES硬件加速检测逻辑不完善导致的:

  • Intel x86架构的AES硬件加速依赖AES-NI指令集,libsodium很早就能正常识别
  • Apple M系列芯片的AES硬件加速走ARM Crypto Extensions指令集,libsodium从1.0.18版本才正式完成该架构的适配,低于该版本的libsodium会误判硬件不支持
  • OpenSSL早于libsodium完成了ARM64架构的AES加速适配,所以你能看到openssl相关命令运行正常
可行解决方案

方案1:升级依赖版本(推荐)

  • 先确认当前libsodium版本:在PHP中执行echo sodium_version_string();,如果输出低于1.0.18则优先升级
  • Homebrew环境执行brew upgrade libsodium,之后重新编译安装PHP的sodium扩展,或者直接升级到PHP 8.0+(PHP 8.0及以上版本默认绑定的libsodium版本已满足要求,且PHP 7.4早已停止官方维护,升级后安全性也有保障)

方案2:Docker自定义镜像适配

官方PHP 7.4的arm64版本镜像自带的libsodium版本过低,你可以基于arm64的Debian/Ubuntu基础镜像自行构建:

  1. 先添加源安装最新版libsodium
  2. 再编译PHP及sodium扩展,编译时指定使用系统新版libsodium即可正常识别M1的AES加速能力

方案3:开发环境临时兼容

如果必须使用现有环境且不需要极致性能,可通过补丁修改sodium_crypto_aead_aes256gcm_is_available()的返回值强制为true,libsodium会自动 fallback 到软件实现的AES-256-GCM,功能完全兼容,仅性能低于硬件加速版本,足够满足开发调试需求

注意事项
  • 该问题仅出现在ARM64架构+低版本libsodium的组合中,不会影响Intel架构服务器的生产环境运行
  • 不要直接基于openssl的AES-256-GCM实现替换sodium的实现,两者的AEAD数据包格式默认不兼容,强行替换会导致跨环境加解密失败

内容的提问来源于stack exchange,提问作者wblommaert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 22:36:01