AlpineベースのDockerコンテナ上で、phpからmailparseを使用した際に、以下のようなPHP Notice が表示されたので、対策してみました。
PHP Notice: iconv(): Wrong charset, conversion from `Shift_JIS' to `UTF-8//TRANSLIT//IGNORE' is not allowed in <プログラムのパス>
どうもAlpine Linux 標準パッケージに含まれるiconvに不具合があるようです。
仕方ないので、ソースからインストールして置き換えてやることにします。Dockerfileを以下のように作り直しました。
FROM alpine:3.8
MAINTAINER Takashi Hashimoto <hashimoto@bagooon.com>
# Install packages
RUN apk --no-cache add \
php7 \
php7-fpm \
php7-opcache \
php7-mysqli \
php7-pdo_mysql \
php7-json \
php7-openssl \
php7-curl \
php7-zlib \
php7-xml \
php7-simplexml \
php7-phar \
php7-intl \
php7-dom \
php7-xmlreader \
php7-ctype \
php7-mbstring \
php7-session \
php7-gd \
php7-imagick \
php7-mailparse \
php7-iconv \
nginx \
supervisor \
curl \
python3 \
composer \
# ↓ここから追加
&& apk add --no-cache --virtual .build-deps \
make \
gcc \
g++ \
&& curl -SL http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz | tar -xz -C ~/ \
&& rm /usr/bin/iconv \
&& mv ~/libiconv-1.15 ~/libiconv \
&& ~/libiconv/configure --prefix=/usr/bin \
&& make \
&& make install \
&& rm -Rf ~/libiconv \
&& apk del .build-deps
ENV LD_PRELOAD /usr/bin/lib/preloadable_libiconv.so
# ↑ここまで
# Add application
RUN mkdir -p /var/www/html
WORKDIR /var/www/html
COPY html/ /var/www/html/
EXPOSE 80 443
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
これで無事に解決しました。
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント