FrankenPHP 自 v1.0.0 起原生支持 ARM64,Apple Silicon Mac 可直接运行;官方 GitHub Releases 提供 frankenphp-darwin-arm64.tar.gz(M1/M2/M3 原生)和 darwin-amd64 版本,二者不可混用;file 命令验证应显示 arm64;第三方 PHP 扩展需确保 ARM64 兼容;Docker 中应优先使用 linux/arm64/v8 镜像并避免跨架构缓存。

FrankenPHP 官方二进制包从 v1.0.0 起已原生支持 ARM64(aarch64),Apple Silicon Mac 可以直接运行,无需 Rosetta 2 转译。
FrankenPHP 的 ARM64 发布包在哪找
官方 GitHub Releases 页面(https://github.com/dunglas/frankenphp/releases)中,每个版本都明确提供以下两类 macOS 二进制:
-
frankenphp-darwin-arm64.tar.gz:专为 Apple Silicon(M1/M2/M3)编译的原生 ARM64 版本 -
frankenphp-darwin-amd64.tar.gz:仅适用于 Intel Mac 的 x86_64 版本
注意:darwin-arm64 包不依赖 Rosetta 2,也不兼容 Intel Mac;反之亦然。下载错架构会导致 exec format error 错误。
验证是否真正在 ARM64 下运行
解压后执行 file frankenphp,输出应含 ARM64 或 aarch64 字样,例如:
立即学习“PHP免费学习笔记(深入)”;
frankenphp: Mach-O 64-bit executable arm64
若显示 x86_64,说明你误用了 Intel 版本;若提示 Bad CPU type in executable,则是架构不匹配的典型信号。
PHP 扩展和依赖的 ARM64 兼容性
FrankenPHP 自带 PHP 解释器和 Caddy,但如果你在应用中用到第三方扩展(如 pdo_pgsql、igbinary),需确认它们也提供了 ARM64 构建版本:
- 通过
pecl install安装的扩展,必须使用 Apple Silicon 编译的 PHP SDK(即php-config输出路径含arm64) - Homebrew 安装的扩展(如
php@8.3)默认已适配 ARM64,但需确保你安装的是arm64架构的 Homebrew(路径为/opt/homebrew,而非/usr/local) - 某些闭源扩展(如 New Relic、Blackfire)可能仍只提供 x86_64 版本,此时会加载失败并报
mach-o, but wrong architecture
FrankenPHP + Docker 在 Apple Silicon 上的注意事项
如果你用 Docker 运行 FrankenPHP,别直接拉官方镜像——Docker Hub 上的 dunglas/frankenphp 默认是 linux/amd64 镜像,ARM64 Mac 会自动启用 Rosetta 模拟,但性能下降明显,且部分系统调用(如 seccomp)可能异常:
- 优先使用
linux/arm64/v8标签镜像(如有),或自己基于debian:bookworm-slim(ARM64 原生)构建 - 检查
docker buildx inspect是否包含linux/arm64平台支持;若无,需运行docker buildx create --use --platform linux/arm64 - 避免在 Docker 中挂载宿主
.env或配置文件时混用 Intel/ARM 生成的缓存(如 OPCache 文件),可能触发段错误
最易被忽略的一点:FrankenPHP 的 UPX 压缩功能(--upx)在 ARM64 上虽可用,但部分 UPX 版本对 aarch64 的符号重定位处理不完善,可能导致启动时 bus error;生产环境建议关闭压缩,或使用 UPX v4.2.0+。



















