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

MacBookPro安装RarArchive失败求助:编译报错问题排查

MacBook Pro安装PHP RarArchive扩展编译失败的解决办法

问题根源

你碰到的编译错误,核心是当前的rar扩展源码没适配你用的高版本PHP:

  • zend_resolve_path函数在PHP 8及以上版本里,参数数量从2个改成了1个,但旧版扩展还在传2个参数,直接导致编译报错;
  • 那个类型格式警告,也是因为新旧PHP版本的类型定义不兼容导致的。

具体解决步骤

1. 放弃直接用pecl安装,手动获取适配版源码

先查清楚你的PHP版本:

php -v

去PECL的rar扩展归档页面,找对应你PHP版本的分支,或者找社区已经修复过参数问题的源码包下载到本地。

2. 手动编译修复源码

解压下载的源码包,进入目录后执行:

# 生成编译配置文件,替换成你实际的phpize路径,比如brew装的PHP可能在/usr/local/bin/phpize
phpize
# 配置编译参数,同样替换成你的php-config路径
./configure --with-php-config=/path/to/php-config

接下来修改rar_stream.c文件里的两个问题:

  • 找到第787行,把原来的
zend_string *arc_str = zend_resolve_path(tmp_archive, tmp_arch_len);

改成适配新版本PHP的写法:

zend_string *arc_str = zend_resolve_path(tmp_archive);
  • 再找到第170行的格式警告处,把对应输出语句里的%lu格式符改成%llu,匹配uint64类型:
// 比如原语句类似这样,修改格式符即可
fprintf(stream, "... %llu ...", self->file_size, self->cursor);

改完之后继续编译安装:

make
make install

3. 启用扩展

用php --ini找到你的php.ini文件位置,打开后添加一行:

extension=rar.so

最后重启PHP或者你的Web服务(比如Apache、Nginx)就可以了。

4. 备选方案:换用其他解压方式

如果编译还是有问题,也可以考虑用PHP内置的ZipArchive(如果你的压缩文件需求可以用它替代),或者找纯PHP编写的RAR解压库,不用编译扩展也能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:20:20