alpine+nginx+php7的docker环境中的iconv问题

在alpine+nginx+php7的docker环境中,使用函数iconv()

php -r "echo iconv( 'utf-8', 'GBK', 'test');"

报了如下的错误:

Notice: iconv(): Wrong charset, conversion from `ISO8859-1' to `UTF-8' is not allowed in Command line code on line 1

解决方法如下: 在Dockerfile中添加如下代码:

RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

重新构建镜像即可。

转自:alpine+nginx+php7的docker环境中的iconv问题

另外:跟alpine的版本也有关系,上述方法适用于 3.12

3.13 和 3.14 使用:

RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.13/community/ gnu-libiconv=1.15-r3
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php

参考: https://github.com/docker-library/php/issues/240

https://github.com/docker-library/php/issues/1121