[PHP-users 10329] Re: 添付ファイルを正しく保存できない

Moriyoshi Koizumi php-users@php.gr.jp
Tue, 24 Sep 2002 20:43:23 +0900


小泉@町田です。

# スレッド途切れていたらすいません。

> > # 一目見て fopen のオプションが 'wb' になっていないからかも知れ
ないと
> > # 思いましたが、このオプションは実のところあまり関係ないようです
ね。
> 
> それがなんと、ジャストミートです。(@_@;)
> 'w'を'wb'にしたとたん、正しく書き込めるようになりました。

後藤さんの指摘は存じていたのですが、
CGI版で試すと、なぜか不思議と 'r' と 'rb'、'w' と 'wb' の
違いが現れないのです。
それで、あのように、ちゃんと確認もせず書いてしまいました。
すみません。

そこで、詳しく調べてみました。以下の情報が正しい(はず)です。

1. CGI / FASTCGI 版では、
   SAPI の中で setmode() 関数を使って、明示的に
   バイナリモードにしているので、'b' をつけてもつけなくても
   動作的にはバイナリモードになります。
   逆にテキストモードにしたいときは 't' オプションをつけます。

2. Apache DSO版 / ISAPI版 では、上記のような現象は起こりません。
   つまり、通常時がテキストモードで、'b' オプションをつけると
   バイナリモードになります。

参考URL: http://msdn.microsoft.com/library/default.asp?
url=/library/en-
us/vccore98/HTML/_crt_text_and_binary_mode_file_i.2f.o.asp

-- 
Moriyoshi Koizumi <readjust@deneb.freemail.ne.jp>