4 回答

TA貢獻1770條經(jīng)驗 獲得超3個贊
添加error_reporting(-1);
,您將看到:
注意: iconv():錯誤的字符集,從“UTF-8”轉(zhuǎn)換而來到“UTF-8//忽略” /test.php 第 5 行不允許
因為顯然alpine 圖像無法與 iconv 正常工作?和維護者只是放棄了實際修復(fù)它。我認為這里需要注意的是,PHP 不提供任何?官方 docker 鏡像,這些是“Docker 官方”鏡像。由 docker 社區(qū)維護的 PHP 鏡像。
如果您不介意更大的基礎(chǔ)圖像,只需切換到非高山圖像即可。
示例 Dockerfile:
FROM php:7.4-alpine
# fix work iconv library with alpine
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
示例構(gòu)建:
docker build -t php:7.4-alpine-iconv ./

TA貢獻1801條經(jīng)驗 獲得超8個贊
PHP5.6.40和Alpine3.8
相當古老的帖子,其中包含答案,但由于沒有答案涵蓋舊版本的PHP
和alpine linux
,我將發(fā)布我如何修復(fù)它。< /span>
1/ 從?下載 php 擴展?.so
?文件(因為下一個版本中不存在該擴展,并且某些舊版本(例如 alpine3.x)不存在該擴展。 8)alpine3.13
docker?run?-v?$(pwd)/out:/out?-it?alpine:3.13?\\n/bin/sh?-c?'apk?add?--no-cache?gnu-libiconv?&&?cp?-f?/usr/lib/preloadable_libiconv.so?/out/preloadable_libiconv.so'
您應(yīng)該在本地 /out/ 目錄中找到*.so
?文件。
2/ 將文件添加到您的圖像Dockerfile
并使用 php 預(yù)加載
COPY?your/file/previously/downloaded/path/preloadable_libiconv.so?/usr/lib/preloadable_libiconv.so ENV?LD_PRELOAD?/usr/lib/preloadable_libiconv.so?php
你不應(yīng)該再有這個錯誤了。

TA貢獻1797條經(jīng)驗 獲得超6個贊
如果您使用的是alpine:3.14
基礎(chǔ)映像,則只需安裝以下軟件包https://pkgs.alpinelinux.org/packages?name =php7-iconv&branch=v3.14

TA貢獻1934條經(jīng)驗 獲得超2個贊
最后我用PHP8解決了這個問題
在嘗試了很多不同的方法之后
docker pull php:8.0.14-cli-alpine3.15
docker run -dit --name myphp php:8.0.14-cli-alpine3.15
docker exec -it --user root myphp ash
現(xiàn)在我們在容器中:
apk add --no-cache --virtual .b $PHPIZE_DEPS curl-dev openssl-dev pcre-dev pcre2-dev zlib-dev wget build-base php8-dev nano
apk add --no-cache --repository https://dl-3.alpinelinux.org/alpine/edge/testing/ gnu-libiconv-dev
mv /usr/bin/gnu-iconv /usr/bin/iconv
mv /usr/include/gnu-libiconv/*.h /usr/include
rm -fr /usr/include/gnu-libiconv
mkdir -p /tmp/q
cd /tmp/q
wget https://secure.php.net/distributions/php-8.0.14.tar.gz
tar xzf php-8.0.14.tar.gz
cd php-8.0.14/ext/iconv
phpize
./configure --with-iconv=/usr
錯誤
configure: error: iconv does not support errno
嘗試解決它:
nano configure
現(xiàn)在刪除“else”塊(包含iconv does not support errno錯誤消息)
繼續(xù)
./configure --with-iconv=/usr
make
make install
mkdir -p /etc/php8/conf.d
echo "extension=iconv.so" > /etc/php8/conf.d/iconv.ini
apk del .b
cd
rm -fr /tmp/q
測試
php -m | grep iconv
php -i | grep iconv
php -r 'echo iconv("UTF-8","UTF-8//IGNORE","A\xe9 B"),PHP_EOL;'
- 4 回答
- 0 關(guān)注
- 227 瀏覽
添加回答
舉報