- 締切済み
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をそのまま出力するにはどうしたら良いですか? ご存知の方がおられましたら、ご教示お願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BellBell
- ベストアンサー率54% (327/598)
回答No.1
http://ameblo.jp/phpwalker/entry-10444869607.html Apacheが勝手にヘッダーを書きかえるってのが気になったので、検索して見ると上記のような記事が見つかりました。 「んなことあり得ない」って思ってましたが、どうもあり得るのですね。 上記リンクの方法が解決策となり得るかどうかは判りませんが、参考まで。
補足
助言ありがとうございます。 自己解決しましたので、書いておきますね。 php.iniのmemory_limitを-1に設定したらContent-TestとContent-Lengthが同じ値になりました。 サーバのメモリが256MBと少なすぎて、memory_limitのデフォルトである8MBが確保できずにphpの出力が0なため、Apacheがそれに合わせてContent-Lengthを0にしてたみたいです。 あと、Apacheは実際のコンテンツサイズ >= Content-Type指定サイズの条件内でないと、指定した値は出してくれないみたいですね。