TechTweetこんにちは、牧野です。先日、年明けに開かれる好きなアーティストのライブのチケットを買いました。前のライブイベントはチケットが売り切れて残念でしたが、今回は大丈夫でした。今度はものすごくいい席(前から4列目!)になったので、今からとても楽しみです。今日は久々にPHP関係のネタです。前、PHPでjpeg画像を出力して表示するプログラムを作ることがありました。その時、IEでアクセスして、表示されたjpeg画像を保存しようとすると、何故かbmpと判断されるという問題が。プログラム自体はログインチェック後に読み込んだ画像を出力するようなシンプルなもので、Firefoxではちゃんとjpegと判断されます。IEからjpeg画像ファイルに直接アクセスして表示した場合も大丈夫です。.";");を追加しましたが、結果は変わりません。Content-disposiionヘッダーも追加しましたが、それでも変わりません。src="test_image.jpg">にして、apacheのmod_rewriteでtest_image.jpgへのアクセスをtest_image.phpに行くようにしてみたけど、変わりません。IEのキャッシュがいけないのかと思ってキャッシュを全削除してみたけど、やっぱり変わりません。同じようにPHPでjpeg画像を出力するプログラムが他のサイトにあり、そちらはIEでもちゃんとjpeg画像だと判断していました。なると、サーバから送られてくるヘッダー情報に何か違いがありそうです。IEでヘッダー情報を見られるツールがないか調べてみると、ありました。headersと同じ感じで使えて便利です。image/jpegCache-Control、Pragmaあたりが何となくあやしそうです。プログラムでこんなヘッダーを出すような部分はないと思って調べたら、session_start()で出ていました。session_start()時、session.cache_limiterで指定されたキャッシュの制御方法が送信されます。そのデフォルトがnocacheになっているので、勝手にno-cacheのヘッダー情報が送られていた、ということでした。画像表示プログラムの最初にsession_cache_limiter('private')を追加して、無事jpeg画像保存できるようになりました。この問題は回避できましたが、ブラウザの挙動違いやバグ、何とかならないかなぁ。Playerもろとも固まることがよくあります。IEはIEで、特定のHTMLだと挙動がおかしくなったり、ひどい場合はページを表示しただけで落ちたことがありました。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。