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

configure: error: icu-config not found
瞬间血压拉满。别急着砸键盘,90%的CentOS7机器都会踩这个坑,三分钟就能填平。
icu-config到底是个啥?
简单说,它是ICU(International Components for Unicode)开发包留下的“路标”,告诉编译器去哪找头文件和库。CentOS7默认只给你装运行库,开发用的“路标”被无情阉掉,于是编译脚本直接懵圈。
一分钟定位问题
先确认系统里有没有icu-config:

which icu-config || echo "果然没有"
再查ICU运行库版本:
rpm -qa | grep icu
常见返回:
libicu-50.2-4.el7_7.x86_64
看到只有libicu,没有libicu-devel,就知道缺了“开发包”。

三步把icu-config请回来
- 直接装开发包(有外网环境)
- 内网机器离线装
- libicu-devel-50.2-4.el7.x86_64.rpm
- libicu-50.2-4.el7.x86_64.rpm(运行库若也被误删)
- 编译PHP intl扩展
yum install libicu-devel
装完再which icu-config,路径秒出:/usr/bin/icu-config。
去同版本CentOS7镜像站抠两个rpm:
rpm -ivh libicu*.rpm
没依赖冲突,十秒搞定。
cd /your/php-source/ext/intlphpize
./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立现,编译一路绿灯,别再被这行红字卡住上线节奏。
