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

bug页面: https://bugs.php.net/bug.php?id=72198
触发此bug须要不少条件:php

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

这个问题,从2016年出现,到如今依然没有人修复,由于这个bus error须要触发的条件不少,因此官方开发iconv扩展的人应该很难重现这样的bug,致使迟迟没法修复。php7

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

--without-iconv

iconv默认是打开的,gd不是,因此编译选项去掉 --with-gd 就能够正常编译了。code

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

pkg install php72-gd php72-iconv

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

extension=iconv.so
extension=gd.so
相关文章
相关标签/搜索