[PHP-users 35492] ファイルダウンロードの不具合について

kimiya.kato kimiya.kato @ atika.co.jp
2011年 2月 20日 (日) 13:57:36 JST


お世話になっております。

PHP5で実装したファイルダウンロードプログラムで不具合が発生しました。

DMZに配置されているWebサーバに対して、LAN側より外部Proxy経由でアクセスし、
ダウンロードを試みたところ不具合が発生しました。
LAN側にある2台のクライアントよりダウンロードを行いましたが、1台目のクライアント
がダウンロード中の状態で、2台目のクライアントでダウンロードを開始すると、1台目
のダウンロードが途中で止まってしまう現象が発生しました。


PHPプログラムは、SSLアクセス(https://xxx.xxx.xxx.xxx/xxxxx)により動かしています。
PHPプログラム側で出力しているログから、以下のことが分かっています。
・LAN側からアクセスした場合は、すべてのクライアントのIPアドレスが、同じIPアドレス
 に変換されている。(NAT変換されていると思われます。)
・セッションIDは、クライアントごとに違う。(セッションIDの変換はされていない。)

なお、Webサーバは自社にて、指定されているIPアドレスにて構築しましたが、ルータ、
ファイアウォールなどのネットワーク機器、LAN内のPCなど、その他のことについては、
一切タッチしておらず具体的なことは分かっていません。

何が原因で、上記のような現象となっているのか、ご教示いただきたく書き込みをさせて
いただきました。
(PHPとは関係ないことが原因かもしれませんが。。。)

WAN側から2台のクライアントよりダウンロードを行った場合は、上記のような現象は発生
せず、2台とも正常にダウンロードできます。
なお、WAN側からダウンロードを行った場合は、Proxyは使用していません。


よろしくお願いいたします。

【Webサーバ】
OS:CentOS 5.5
Apache:2.2.16
PHP:5.2.14

【PHPダウンロードプログラム】
header("Cache-Control: public");
header("Pragma: public");
header("Content-Disposition: attachment; filename=\"". mb_convert_encoding( basename($path_file),"SJIS-win","UTF-8")."\"");
header("Content-Length: ".$content_length);
header("Content-Type: application/octet-stream");
if (!readfile($path_file)) {
    die("Cannot read the file(".$path_file.")");
}


PHP-users メーリングリストの案内