php7在FreeBSD静态编译iconv,导致BUS ERROR (core dump)解决
bug页面: https://bugs.php.net/bug.php?id=72198
触发此bug需要很多条件:
- FreeBSD系统(10.0以上),Linux系统、MacOS下均无此问题
- 静态编译iconv扩展,动态iconv扩展也无此问题
- 系统安装了libiconv库(根据php bugs报告页面)
- 必须是直接运行在硬件之上的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-g php72-iconv
将目录 /usr/local/lib/php/20170718 内的gd.so和iconv.so拷贝到安装php的路径 php.ini里打开这两个扩展即可:
extension=iconv.so extension=gd.so
相关推荐
恩布开源企业IM 2013-04-11
yhuihon 2014-03-09
minggehenhao 2019-11-08
zjx0 2008-02-06
boxifeng 2007-11-25
SoarFly00 2007-10-08
零點 2007-09-30
guoddoutlookcom 2007-09-26
airfish000 2011-05-21
guoddoutlookcom 2011-05-21
misshjh 2011-05-21
longxiang 2011-05-21
louhui00 2011-05-21
梦想启航 2011-05-21
boyishachang 2010-08-29
我们直接指定到一个大空间去存储mysql数据。在CONFIGURE_ARGS=后面增加--with-charset=gb2312 \和--with-xcharset=all \ 两行才能支持中文字符。
邹中凡 2010-02-22
迷惘宅猪 2010-01-19
iPro 2009-12-02