HCRM博客

CentOS7编译PHP Intl扩展ICU配置问题解决攻略

CentOS7编译PHP intl扩展找不到icu-config解决

服务器上跑着跑着的业务突然提示“intl扩展缺失”,领导一句“赶紧补上”,结果你兴冲冲地cd php-7.x.x/ext/intl && phpize && ./configure,啪地弹出一行红字:

CentOS7编译PHP Intl扩展ICU配置问题解决攻略-图1

configure: error: icu-config not found

瞬间血压拉满。别急着砸键盘,90%的CentOS7机器都会踩这个坑,三分钟就能填平。

icu-config到底是个啥?

简单说,它是ICU(International Components for Unicode)开发包留下的“路标”,告诉编译器去哪找头文件和库。CentOS7默认只给你装运行库,开发用的“路标”被无情阉掉,于是编译脚本直接懵圈。

一分钟定位问题

先确认系统里有没有icu-config:

CentOS7编译PHP Intl扩展ICU配置问题解决攻略-图2

which icu-config || echo "果然没有"

再查ICU运行库版本:

rpm -qa | grep icu

常见返回:

libicu-50.2-4.el7_7.x86_64

看到只有libicu,没有libicu-devel,就知道缺了“开发包”。

CentOS7编译PHP Intl扩展ICU配置问题解决攻略-图3

三步把icu-config请回来

  1. 直接装开发包(有外网环境)
  2. yum install libicu-devel

    装完再which icu-config,路径秒出:/usr/bin/icu-config

  3. 内网机器离线装
  4. 去同版本CentOS7镜像站抠两个rpm:

    • libicu-devel-50.2-4.el7.x86_64.rpm
    • libicu-50.2-4.el7.x86_64.rpm(运行库若也被误删)

    rpm -ivh libicu*.rpm

    没依赖冲突,十秒搞定。

  5. 编译PHP intl扩展
  6. cd /your/php-source/ext/intl

    phpize

    ./configure --with-php-config=/usr/local/php/bin/php-config

    make && make install

    看到Build complete.就意味着icu-config已经乖乖把路径递给了编译器。

常见后遗症排查

  • php -m | grep intl 没返回?

    检查php.ini有没有加extension=intl.so,路径不对就find /usr/local/lib/php/extensions -name intl.so把绝对路径写进去。

  • 重启php-fpm/apache后依然提示找不到?

    ldd $(php-config --extension-dir)/intl.so看是否缺libicuuc.so.50,缺啥补啥,yum install libicu再重启。

一句话总结

CentOS7编译PHP intl扩展报“icu-config not found”,就是缺libicu-devel,装上开发包,icu-config立现,编译一路绿灯,别再被这行红字卡住上线节奏。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41429.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~