基于php:fpm镜像的Docker容器加载PHP intl扩展失败求助
解决PHP-FPM Docker容器中安装intl扩展的问题
我之前也碰到过一模一样的糟心事,折腾了好半天终于搞定了,给你分享几个亲测有效的方案:
方案一:Debian/Ubuntu基础镜像的标准安装流程
php:fpm默认是基于Debian的,安装intl必须先装系统依赖,不然编译会失败。直接把这段加到你的Dockerfile里:
# 安装intl所需的系统依赖 RUN apt-get update && apt-get install -y \ libicu-dev \ && rm -rf /var/lib/apt/lists/* # 清理缓存减小镜像体积 # 编译并安装intl扩展 RUN docker-php-ext-configure intl \ && docker-php-ext-install intl
我之前就是漏了装libicu-dev,导致编译一直报错,加上之后就顺利安装了。
方案二:如果是Alpine版本的php:fpm镜像
要是你用的是php:fpm-alpine这类轻量镜像,依赖包的名字不一样,得换成apk命令:
RUN apk add --no-cache icu-dev \ && docker-php-ext-configure intl \ && docker-php-ext-install intl
Alpine的包管理更简洁,记得加--no-cache避免缓存冗余。
验证扩展是否成功加载
安装完之后,你可以启动容器后执行这个命令确认:
php -m | grep intl
如果输出intl就说明加载成功了。要是没输出,去/usr/local/etc/php/conf.d/目录下看看有没有docker-php-ext-intl.ini文件,里面应该有extension=intl.so的配置,没有的话手动加一行就行。
另外,之前参考的方案可能针对的是比较旧的PHP镜像版本,现在官方的docker-php-ext-*脚本已经很成熟了,尽量用官方提供的工具,别自己手动编译,容易踩坑。
内容的提问来源于stack exchange,提问作者Marcelo Noguti
相关产品推荐
相关产品推荐

