[PHP-users 4565] HTTPSにおけるファイルダウンロード

Tomohiro Miyakawa php-users@php.gr.jp
Mon, 07 Jan 2002 12:29:54 +0900


宮川と申します。

現在、ファイルダウンロードプログラムを作成しています。
サーバに保存させたファイルを標準出力に書き出し
ダウンロードさせるのですが、
HTTPSの環境で且つ
IE(ver5.5, 6.0 では確認済み)で
セッションを開いた状態(session_start();)で
ダウンロードを実行すると
「名前を付けて保存」パネルが表示される直前に
(HTTP環境では表示され、保存できる)
「このインターネットのサイトを開くことができませんでした。
 要求されたサイトが使用できないか、見つけることができません。
 後でやり直してください。」
のメッセージが表示され保存できません。

こちらで調べてみたところ、セッションが関係しているようです。
この作成環境ではどうしてもセッションを使用する必要があり
ファイルの先頭でセッションを開いています。
テストプログラムにて、このセッションを開かない場合
HTTPS & IE でもダウンロードできました。

セッションを使用した上でのダウンロード方法を
ご存知の方がおりましたら、教えてください。
よろしくお願いします。


テスト環境
 solaris8  apache1.3.20 + mod_ssl-2.8.4  php4.0.6

以下にサンプルプログラムを載せます
---------------------------------
<?php

session_start();

$file_location = "/tmp/test.txt";
$filename = "test.txt";

/* ファイルダウンロード処理 */
$file_location = i18n_convert( $file_location, EUC );
$filesize = filesize( $file_location );
header( "Accept-Ranges: none" );
header( "Content-Length: $filesize" );
header( "Content-Disposition: filename=\"$filename\"" );
header( "Content-Type: text/octet-stream" );// IE
i18n_http_output( "pass" );
$fp = fopen( "$file_location", "rb" );
@fpassthru( $fp );
exit;

//session_destroy();
?>