问题描述
执行代码:
$fileName = iconv('UTF-8', 'gb2312', $fileName);
报错:
iconv(): Wrong charset, conversion from
UTF-8' to
gb2312′ is not allowed
查了一下,据说是iconvlib版本太低,参考:docker-library/php#240
但是看了一下dockerfile,已经针对该问题进行处理见: https://github.com/yeszao/dnmp/pull/167,但是我这边还是出现上面的报错。
查看 phpinfo,显示:
iconv support | enabled
iconv implementation | unknown
iconv library version | unknown
解决方法
该问题已修复,请用最新的
fix(PHP5): fixed iconv not working from PHP5.x · yeszao/dnmp@2fcd054 (github.com)service/php/Dockerfile
文件,重新编译 php 容器docker compose build php
后,重启整个服务即可
因为新版本的libiconv>=v3.14移除了preloadable_libiconv.so这个扩展包(最后一个版本alpine – gnu-libiconv v3.13 👉 Alpine Linux packages)
进入php容器执行下面语句,然后重启容器即可(镜像php:7.4.27-fpm-alpine
已验证可用)
apk add gnu-libiconv=1.15-r2 --no-cache --repository http://mirrors.aliyun.com/alpine/v3.12/community