<?php $filter = urlencode('convert.iconv.cp932/utf-8'); $filename = urlencode('sjis.csv'); $fp = fopen("php://filter/read=$filter/resource=$filename", 'r'); // Warning: fopen(): unable to create or locate filter "convert.iconv.cp932/utf-8" while ($csv = fgetcsv($fp)) { print_r($csv); }
Alpine Linux の iconv だと cp932 がダメなようです。
shift_jis なら通りますが・・
<?php $filter = urlencode('convert.iconv.shift_jis/utf-8'); $filename = urlencode('sjis.csv'); $fp = fopen("php://filter/read=$filter/resource=$filename", 'r'); while ($csv = fgetcsv($fp)) { // Warning: fgetcsv(): iconv stream filter ("shift_jis"=>"utf-8"): invalid multibyte sequence print_r($csv); }
cp932 の CSV を読みたいのです。
それっぽいワードでぐぐるとと下記がでてきました。
https://github.com/docker-library/php/issues/240#issuecomment-305038173
次のようなワークアラウンドがあるようです。
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