不需要额外打补丁,但必须用对应架构的编译器和运行时环境重新编译PHP;卡点在于glibc版本、CPU指令集兼容性及第三方库适配,如LoongArch需loongarch64工具链、ARM64需确认crypto扩展支持。

PHP 编译时是否需要为龙芯、飞腾等国产 CPU 单独打补丁?
不需要额外打补丁,但必须用对应架构的编译器和运行时环境重新编译 PHP。龙芯(LoongArch)、飞腾(ARM64,如 FT-2000/4、D2000)本身不拒绝标准 PHP 源码,真正卡住的是底层依赖:glibc 版本、CPU 指令集(如 LoongArch 不支持 x86 的 movq,ARM64 没有 rdtsc)、以及扩展所依赖的第三方库(如 openssl、libxml2)是否已适配。
- 龙芯 3A5000/3C5000 运行的是 LoongArch64,需使用
gcc-loongarch64-linux-gnu工具链,且内核 ≥ 5.19(原生 LoongArch 支持合入主线时间) - 飞腾 D2000/FT-2000+ 属于 ARM64,可复用主流 aarch64 构建流程,但需确认系统镜像是否启用
lpae和crypto扩展(影响openssl性能) - 所有国产平台目前均不预装 PHP,必须源码编译或使用厂商提供的仓库(如统信 UOS 的
php8.2-cli包、麒麟软件的php7.4-fpm)
configure 阶段哪些参数容易导致国产平台编译失败?
最常踩坑的是硬编码 x86 汇编、未关闭非通用指令优化、以及忽略交叉编译路径。PHP ./configure 默认会探测 __x86_64__ 宏并启用 SSE 相关代码路径,这在 LoongArch 或无 SIMD 的飞腾早期芯片上直接报错。
- 必须显式指定
--build和--host,例如龙芯交叉编译:--build=x86_64-pc-linux-gnu --host=loongarch64-unknown-linux-gnu - 禁用非目标平台汇编:
--disable-opcache-file --without-gdbm --without-db4(这些扩展含 x86 内联汇编) - OpenSSL 若为自建,需先用
./Configure linux-generic64 no-asm编译,否则 PHP 链接时找不到OPENSSL_ia32cap_P - 避免
--enable-inline-optimization:国产 GCC 对此支持不稳定,易触发段错误
常见扩展在国产平台的兼容状态
不是所有 PECL 扩展都能“一键启用”。部分扩展依赖硬件特性或闭源驱动,需人工裁剪或替换实现。
-
opcache:LoongArch 下需补丁(PHP 8.2+ 已合入基本支持),飞腾 ARM64 可直接启用,但建议加opcache.huge_code_pages=0(国产内核 hugetlbpage 支持不一) -
redis、pdo_mysql:纯 C 实现,只要对应客户端库(hiredis、libmysqlclient)已适配,即可编译通过 -
grpc:需用protobuf3.21+ 且禁用nanopb后端(其默认生成 x86 汇编) -
imagick:依赖 ImageMagick,而后者在龙芯上需手动关闭openmp和heic(libde265 未适配 LoongArch)
运行时遇到 “Illegal instruction” 怎么快速定位?
这不是 PHP 自身问题,而是某层动态库执行了当前 CPU 不支持的指令。典型场景是用了 x86 编译的 libsqlite3.so 或混入了 Intel QAT 加速模块。
立即学习“PHP免费学习笔记(深入)”;
- 先用
cat /proc/cpuinfo | grep -E "model|isa"确认架构(LoongArch64 / aarch64) - 再用
file $(which php)和readelf -A $(php-config --extension-dir)/opcache.so | grep Tag_ABI核对 ABI 类型 - 最直接方式:
strace -e trace=execve php -v 2>&1 | grep -E "(execve|failed)",看失败前加载了哪个 .so - 若报错来自
zend_extension,临时注释php.ini中所有zend_extension=行,逐个开启排查
国产平台的 PHP 适配,本质是构建链路的可控性问题——你得清楚每个 .so 是谁编的、用什么指令集生成的、有没有偷偷调用 cpuid 或 rdrand。别信“下载二进制包就能跑”,也别指望 PHP configure 能自动绕过所有硬件差异。



















