第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

為什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

PHP
江戶川亂折騰 2023-12-15 15:38:57
給出以下代碼:<?php$mb_name = "湊崎 紗夏";$tmp_mb_name = iconv('UTF-8', 'UTF-8//IGNORE', $mb_name);if($tmp_mb_name != $mb_name) {    echo "tmp_mb_name: {$tmp_mb_name}\n";    echo "mb_name: {$mb_name}\n";    exit;} else {    echo "no problem!\n";}我在 3v4l.org 中測試,它輸出 no problem!但是,在 php:7.4-fpm-alpine docker 圖像中,它輸出以下內(nèi)容:tmp_mb_name: mb_name: 湊崎 紗夏根據(jù)php.net:如果附加字符串 //IGNORE,則無法在目標字符集中表示的字符將被默默丟棄。為什么 $mb_name 無法在 php alpine 圖像中的 UTF-8 中表示?
查看完整描述

4 回答

?
德瑪西亞99

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 ./


查看完整回答
反對 回復(fù) 2023-12-15
?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

PHP5.6.40和Alpine3.8

相當古老的帖子,其中包含答案,但由于沒有答案涵蓋舊版本的PHPalpine 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)該再有這個錯誤了。



查看完整回答
反對 回復(fù) 2023-12-15
?
FFIVE

TA貢獻1797條經(jīng)驗 獲得超6個贊

如果您使用的是alpine:3.14基礎(chǔ)映像,則只需安裝以下軟件包https://pkgs.alpinelinux.org/packages?name =php7-iconv&branch=v3.14


查看完整回答
反對 回復(fù) 2023-12-15
?
撒科打諢

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;'


查看完整回答
反對 回復(fù) 2023-12-15
  • 4 回答
  • 0 關(guān)注
  • 227 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號