バイナリファイルをダウンロードできなくなりました。
バイナリファイルをダウンロードできなくなりました。
以下のように、fopen で取得したバイナリデータをブラウザにダウンロードさせていましたが、ある時からダウンロードできなくなりました。
・プログラムコードは変更していません。
・同様の処理をしている全ての箇所が失敗するようになりました。
・いずれも、かつては正常に動作していました。
・ApacheやPHPはエラーメッセージを出力していません。
Apacheの設定またはPHPの設定を変えてしまったのかな、と推測していますが、原因がつかめていません。
検討がつかないので困っています。推測できる原因をご提示ください。
[環境]
CentOS 5.3 (ルート権限も持っている、完全にコントロールできる環境です)
PHP 5.1.6
Apache 2.2.3
[問題のコード その1]
$ret='';
$handle = @fopen($file_name, 'r');
if ($handle) {
while (!feof($handle)) $ret.=fread($handle, 8192);
fclose($handle);
}
header('Content-disposition: attachment; filename="'.$src.'"');
header('Content-type: audio/3gpp');
header('Cache-Control: private');
header('x-jphone-copyright: no-transfer');
die($ret);
[問題のコード その2]
$url = "http://chart.apis.google.com/chart?".http_build_query($query);
$img = @imagecreatefrompng($urls);
$img = @imagerotate($img,270,0);
header('Content-Type: image/jpeg');
imagejpeg($img);
[問題のコード その3]
$url = "http://example.net/example.php";
$options = array('http' => array(
"method" => 'POST',
"header" => "Content-Type: application/x-www-form-urlencoded\r\n"
"content" => http_build_query($data),
));
$contents = @file_get_contents($url, false, stream_context_create($options));
//書きだし
header('Content-Type: application/x-shockwave-flash');
header('Content-Length: '.strlen($contents));
print $contents;