渡されたバイナリ文字列から画像を作成したい:
$fileName = uniqid().".".$imgType;
$fileName = "../tmp/".$fileName;
$f = fopen($fileName,'wb');
$picture = mb_convert_encoding($picture, "UUENCODE", "UTF-8");
fwrite($f, $picture);
fclose($f);
これは、PHP 5.3.10-1ubuntu3.4 を搭載した 1 台のマシンで非常にうまく機能します。画像は適当に作成。PHP 5.3.19 を搭載した別のマシンで試してみると、出力は非常に奇妙です。たとえば、ファイルを開くと、目的の文字の代わりにless
見つかります。\0
^@
なぜこれが起こるのですか?
バイナリ文字列は、どちらの場合も UTF-8 でエンコードされた HTML5 Formdata を使用する Web サイトからの投稿要求の一部です。