• 締切済み

header関数で出力するContent-Lengthが以下の条件では

header関数で出力するContent-Lengthが以下の条件では0になってしまいます。 header("Content-Test: ".filesize("./data.dat")); header("Content-Length: ".filesize("./data.dat")); readfile("./data.dat"); なおかつ、data.datのサイズが2.6MB以上。 それぞれのバージョンは以下の通りです。 Apache 2.2.15 PHP 5.3.2 上の条件で、ヘッダを確認したらContent-Testはちゃんとdata.datのサイズが書かれて いるのですが、Content-Lengthが0になってしまいます。 readfileの行を削除して、実行してもContent-Lengthだけが0になってしまいます。 headerで指定したContent-Lengthをそのまま出力するにはどうしたら良いですか? ご存知の方がおられましたら、ご教示お願いいたします。

みんなの回答

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

http://ameblo.jp/phpwalker/entry-10444869607.html Apacheが勝手にヘッダーを書きかえるってのが気になったので、検索して見ると上記のような記事が見つかりました。 「んなことあり得ない」って思ってましたが、どうもあり得るのですね。 上記リンクの方法が解決策となり得るかどうかは判りませんが、参考まで。

fs3991
質問者

補足

助言ありがとうございます。 自己解決しましたので、書いておきますね。 php.iniのmemory_limitを-1に設定したらContent-TestとContent-Lengthが同じ値になりました。 サーバのメモリが256MBと少なすぎて、memory_limitのデフォルトである8MBが確保できずにphpの出力が0なため、Apacheがそれに合わせてContent-Lengthを0にしてたみたいです。 あと、Apacheは実際のコンテンツサイズ >= Content-Type指定サイズの条件内でないと、指定した値は出してくれないみたいですね。

関連するQ&A