Mac Mini M1上编译x86_64架构PHP intl.so适配XAMPP方法
解决Mac Mini M1上编译x86_64架构PHP intl.so适配XAMPP的问题
你的问题核心是M1芯片默认编译会生成arm64架构的库,但XAMPP为x86_64版本,因此需要强制指定编译架构为x86_64,具体操作步骤如下:
步骤1:设置x86_64编译环境变量
在终端执行以下命令,强制所有编译工具采用x86_64架构编译:export CFLAGS="-arch x86_64" export CXXFLAGS="-arch x86_64" export LDFLAGS="-arch x86_64" export CC="clang -arch x86_64" export CXX="clang++ -arch x86_64"步骤2:用XAMPP自带phpize初始化编译环境
进入你下载的对应PHP版本源码的ext/intl目录(单独下载intl扩展则直接进入扩展目录),执行XAMPP自带的phpize(不要使用系统默认的phpize):/Applications/XAMPP/xamppfiles/bin/phpize步骤3:配置编译参数
执行configure命令时,必须指定XAMPP的php-config路径,同时绑定XAMPP自带的ICU库目录(避免调用系统arm架构的ICU):./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config --enable-intl --with-icu-dir=/Applications/XAMPP/xamppfiles步骤4:编译并安装扩展
先清理之前的编译残留,再执行编译和安装:make clean make make install步骤5:验证架构正确性
使用lipo命令检查生成的intl.so架构:lipo -info /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20210902/intl.so若输出
Architecture: x86_64,说明编译正确,此时重启XAMPP即可正常加载扩展。
额外注意事项
如果configure时提示找不到ICU库,可能是XAMPP未自带完整的ICU依赖,可通过homebrew安装x86_64版本的ICU:
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" arch -x86_64 brew install icu4c
之后在configure命令中指定homebrew的ICU路径:
./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config --enable-intl --with-icu-dir=/usr/local/opt/icu4c
内容的提问来源于stack exchange,提问作者Angel Aparicio
相关产品推荐
相关产品推荐

