當前位置:
首頁 > 知識 > php7在FreeBSD靜態編譯iconv,導致BUS ERROR (core dump)解決

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-g php72-iconv

將目錄 /usr/local/lib/php/20170718 內的gd.so和iconv.so拷貝到安裝php的路徑 php.ini里打開這兩個擴展即可:

extension=iconv.so
extension=gd.so

php7在FreeBSD靜態編譯iconv,導致BUS ERROR (core dump)解決

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

最新Docker的安裝與使用以及常見問題 Linux Windows
jsx遇到template-directive

TAG:程序員小新人學習 |