みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

headerのContent-Typeの出力制御

お世話になります。
PHPの問題なのか、Apacheの問題なのか分かりかねましたので、とりあえずPHPのカテゴリーに質問させて頂きます。


■問題点
mmfファイルにアクセスしているように見せかけてPHPを実行するプログラムにおいて、Headerの出力として"Content-Type:application/x-smaf" だけ出力したいのだが、"Content-Type: text/html; charset=Shift_JIS" も同時に出力されてしまう。


■出力されるHeader(一部修正しています)
HTTP/1.1 200 OK
Date: Wed, 25 May 2005 01:46:37 GMT
Server: Apache/1.3.27 (Unix)
X-Powered-By: PHP/4.3.6
Accept-Ranges: bytes
Content-Type:application/x-smaf
Content-length:11212
Connection: close
Content-Type: text/html; charset=Shift_JIS
(↑この一行が邪魔)


■PHPプログラム
拡張子mmf(smafファイル)でphpを実行し、smafファイルを出力する。

<?php
$melody_file = "hoge.mmf";
$melody_filesize = @filesize( $melody_file );
$fd = fopen ($melody_file, "rb");
$contents = fread ($fd, $melody_filesize );
fclose ($fd);
header("Content-Type:application/x-smaf\nContent-length:${melody_filesize}\n\n");
echo $contents;
?>


■Apache設定
AddType application/x-httpd-php .php .php4 .php3 .phtml .mmf


■動作環境
ReadHat7.2
Apache 1.3.27
PHP 4.3.6


上記の件につきまして、対応方法をご存知の方がいらっしゃいましたら宜しくお願いいたします。

投稿日時 - 2005-05-25 11:03:26

QNo.1408664

困ってます

質問者が選んだベストアンサー

プログラムのどこかで文字列を出力してしまっているという事はないですよね?意図的に文字列を出力してなくても、例えばプログラムの<? ?>の外側に改行が入っていたり(インクルードされてるファイルもあればそれも)すると、改行がブラウザに送られてしまいます。
文字列がブラウザに送られると、このヘッダが自動で付くようです。

投稿日時 - 2005-05-25 12:03:27

お礼

早速のご回答有難うございました。
原因はご指摘頂いた改行ではなく、余計なヘッダー出力が混ざっていた為でした。
自分の手元のソースを見直したら "Accept-Ranges: bytes\n" が入っていました。
確か実mmfデータを単純にダウンロードした場合のヘッダーを見て真似して入れておいた部分だったのですが、これを削除したら余計なContent-Typeは削除されました。
確認不足で質問してしまい申し訳ございませんでした。

単純なこちらのミスにも関わらず、ご回答いただき有難うございました。

投稿日時 - 2005-05-25 14:52:52

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問