php7在FreeBSD系统下静态编译iconv,导致BUS ERROR (core dump)解决

bug页面: https://bugs.php.net/bug.php?id=72198
触发此bug需要很多条件:

  1. FreeBSD系统(10.0以上),Linux系统、MacOS下均无此问题
  2. 静态编译iconv扩展,动态iconv扩展也无此问题
  3. 系统安装了libiconv库(根据php bugs报告页面)
  4. 必须是直接运行在硬件之上的FreeBSD系统(虚拟机下的FreeBSD系统也没有重现出此问题)

这个问题,从2016年出现,到现在依然没有人修复,因为这个bus error需要触发的条件很多,所以官方开发iconv扩展的人应该很难重现这样的bug,导致迟迟无法修复。

我的解决方案是,编译php7.0以上的时候去掉iconv扩展,但很不幸,必须得同时去掉gd扩展,因为gd扩展需要iconv扩展才能运行。 所以编译的时候添加参数:

--without-iconv 

iconv默认是打开的,gd不是,所以编译选项去掉 --with-gd 就可以正常编译了。

编译完成后,安装系统的php72-gd、php72-iconv扩展,

pkg install php72-gd php72-iconv

将目录 /usr/local/lib/php/20170718 内的gd.so和iconv.so拷贝到安装php的路径 php.ini里打开这两个扩展即可:

extension=iconv.so
extension=gd.so

转载于:https://my.oschina.net/jsk/blog/2248831

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值