• ベストアンサー

Headerが送信されない!?

Apache/php初心者です。 GDを使った携帯用phpを作っています。 phpで出力したHTML側で次のような記述をしています。 <img src="PutImg.php?ImgID=35051" width="100" height="100"> PutImg.phpで header( "Content-type: image/jpeg" ); imagejpeg ( $img ); と処理しています。 携帯シミュレータで確認すると ローカルの「Ap2+php4.4.2/win版」では Content-Type: image/gif となり画像が表示されます。 レンタル・サーバの「Ap+php4.4.2/Linux版」では Content-Type: text/html となり画像が表示されません。 まるでheader()が無視された感じです。 同様なトラブルを経験された方は居ませんか? どこら辺をチェックしたら解決するのでしょうか? 宜しくご教授ください。

  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

Content-Type: text/html のあとの内容は(ブラウザ側でのHTTPの監視などで)確認されていますでしょうか?あるいは「PutImg.php?ImgID=35051」へ直接アクセスしてみられてますか?つまりスクリプト内で何かエラーが発生していて「本当にテキストが返ってきている可能性」は潰していますか?

kinta03
質問者

お礼

ありがとう御座いました。

kinta03
質問者

補足

続けてのレスありがとう御座います。 こちらに簡単なサンプル・コードを入れて置きますので(.lzh) ご指導願います。 http://hesaka.in.arena.ne.jp/PutImg/PutImg.lzh この中の「result_simulator.txt」はシミュレータの実行結果を .txtに貼り付けたものです。 Apache/php初心者では判断が出来ませんので 宜しくご教授ください。 なお、 http://hesaka.in.arena.ne.jp/PutImg/ で、お試し出来ると思います。

その他の回答 (2)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

エラーが発生したせいでtext/htmlになっている気が。 $src_img = @imagecreatefromjpeg( 'test.jpg' ); でこけてないですか?

kinta03
質問者

お礼

ありがとう御座いました。

kinta03
質問者

補足

みなさん、ご協力ありがとう御座いました。 imagecreatetruecolorとimagecopyresampledで コケていました。 ローカルとサーバのGDバージョンの相違が原因でした。 同じphp4.4.2なので深く考えていませんでした。 そこが初心者の初心者たる所と笑ってお許しください。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

header( "Content-type: image/jpeg" );なのにContent-Type: image/gifですか?・・というツッコミは置いといて(汗 レンタルサーバには広告などの自動挿入はありませんか?XREAなどではSuperFAQの問題なので・・。

kinta03
質問者

補足

早速のツッコミありがとう御座います。(^_^;) レンタルは有料の広告なしです。

関連するQ&A

  • phpでテキストを返す

    html側で <img src="./image.php" /> php側で header("content-type: image/jpeg"); imagejpeg($image); imagedestroy($image); とすると、画像が表示されますが、 これを画像ではなく、テキストで返すにはどのようにしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • phpでheader関数を用いた画像表示について

    $image = imageCreateFromJPEG($_FILES["upfile"]["tmp_name"][$i]); header(content-type: image/jpeg); imageJPEG($image); で画像を表示させたいんですが Wanning : cannot modify header information - headers already sent by~~ と警告が出て文字化けしてしまします 色々調べてみるとこのheader関数の前にはいかなる出力もダメというのがわかったんですが テンプレートを使用していて、どうしても途中で出力せざるをえないんですが何かいい方法はありませんか?

    • ベストアンサー
    • PHP
  • headerに乱数を仕込みたい

    ランダムに画像を出力するプログラムを書いています。 <img src='test.php' border=0 /> test.php header("Content-Type: image/gif"); header("Expires: Thu, 01 Dec 1994 16:00:00 GMT"); header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); 現在は上記のようにheaderが書いてあり、1秒ズレれば別ページとして判断されるようになっているようです。 しかし、 <img src='test.php' border=0 /> <img src='test.php' border=0 /> <img src='test.php' border=0 /> このように、3つHTML上に記述した場合、1秒以内で読み込みが来てしまい同一ファイルと判断される為なのか、全て同じ画像が出てしまいます。 phpが回ればログを書くようにしてみましたが やはり1回しか回っていないようです。 そこで、headerに乱数など必ず変わる値を差し込んで、 別物として読み込ませるような方法はないでしょうか。 もちろん、 <img src='test.php?i=1' border=0 /> <img src='test.php?i=2' border=0 /> <img src='test.php?i=3' border=0 /> このように、HTML側でURLを変えれば別物として読まれますが、この方法はNGです。 あくまでtest.phpのプログラム側でなんとかしたいのです。 宜しくお願い致します。

    • 締切済み
    • PHP
  • [au携帯] DBに格納されたバイナリ形式の画像を表示する方法

    [au携帯] DBに格納されたバイナリ形式の画像を表示する方法 データベース(PostgreSQL)に格納されたバイナリデータの画像をPHPを使用して元に戻し表示しようとしています。 携帯用ホームページを作成しているのですが、ドコモだとちゃんと表示されるのにAUでアクセスすると画像がバッテンになってしまって表示できません。 下記のようにPHPを使って画像を表示しているのですが何処が間違っているのでしょうか。 画像の表示用 img.php <?php //DBから必要なデータを取得します。 // $imag_data ------- バイナリ形式の画像データ // $image_file_type - 画像保存時に下のようにして取得した値 // list($width,$height,$image_file_type)=getimagesize($imgurl); // $img_name -------- 画像の名前 $imag_data = pg_unescape_bytea($imag_data); header("Content-type: " .$image_file_type); header('Content-Disposition: inline; filename="' .$img_name.'"'); print($imag_data); exit(); ?> img.phpに直接アクセスするのと、<img src='http://…img.php' />で表示してみたのですが、ドコモだと2通りともできるのに、AUだと「リクエストされたページは表示できません。」と出てしまい、困っています。 どなたか、ご教授くださいますようよろしくお願いいたします。

    • 締切済み
    • PHP
  • header('Content-type: ima

    header('Content-type: image/jpeg'); echo $img->createResizedImage(100, 100); で画像として出力しているのですが、 単独の画像ではなく(?) HTMLの中の画像として出力するにはどうすれば良いですか? 具体的には、ブラウザへ出力する際、HTMLのソースと同じように<html><body>画像</body></html>で出力したいです

    • ベストアンサー
    • PHP
  • phpで画像のリサイズ表示

    質問お願い致します。 phpで画像のリサイズをして表示させたいと思っています。 色々調べた結果下記のサンプルコードを入れてみました。 <?php header("Content-Type:image/jpeg"); $imgpath = "http://*****************.jpg"; $im_info = getimagesize($imgpath); $src_im = ImageCreateFromJPEG($imgpath); $dst_im = imagecreate($im_info[0]/2,$im_info[1]/2); imagecopyresampled($dst_im,$src_im,0,0,0,0,$im_info[0]/2,$im_info[1]/2,$im_info[0],$im_info[1]); imagejpeg($dst_im); ?> しかし「画像ファイル "http://*****************.php" は壊れているため、表示できませんでした。」となってしまいました。 色々試した結果、下記の記述だけでも「画像ファイル "http://*****************.php" は壊れているため、表示できませんでした。」と表示されてしまいました。 <?php header("Content-Type:image/jpeg"); ?> 「header("Content-Type:image/jpeg");」を使用する際にはphp.iniの書き換えをするのかと調べてみたのですが、結局原因はわかりませんでした。 サーバーはさくら(スタンダードコース)です。 PHPは「PHP 5.2.17」になります。 どなたかお知恵を貸して頂けないでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • header関数について

    私の認識としてはheader関数とはhtml内にある<head>内の代替わりだと思っていたのですが、それではheader関数の意義がないと思い、質問させていただきました。 php内でhtmlを書く場合、header関数を使わずに、<head>内で <meta http-equiv=\"Content-Type\" content=\"text/html\; charset=euc-jp\">\n"; のように書けばいいと思うのですが、なぜ header("Content-Type: text/html; charset=EUC-JP"); のように書く必要があるのでしょう?何かメリットでもあるのでしょうか? それとも私のheader関数に対する認識がずれていますか? php初心者というより、プログラム事態をあまり書いたことがないため、理解が乏しいです。header関数とhtml内での<head>間に書く違いを教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 「imagejpeg」(GD)で作成した画像を保存できない

    <?php // 空の画像を作成し、テキストを追加します $im = imagecreatetruecolor(120, 20); $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); // content type ヘッダを、ここでは image/jpeg と設定します header('Content-type: image/jpeg'); // 画像を出力します imagejpeg($im); // メモリを開放します imagedestroy($im); ?> http://www.php.net/manual/ja/function.imagejpeg.php を参照して(そのまま利用して)、画像を作成して表示させてみました。 すると、これはその通り、うまく画像が表示されました。 しかし、 <?php // 空の画像を作成し、テキストを追加します $im = imagecreatetruecolor(120, 20); $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); // 【追加分】: 画像を保存する imagejpeg($im, 'new.jpg'); // content type ヘッダを、ここでは image/jpeg と設定します header('Content-type: image/jpeg'); // 画像を出力します imagejpeg($im); // メモリを開放します imagedestroy($im); ?> のように imagejpeg($im, 'new.jpg'); を挿入して、その画像を保存しようとしているのですが、うまくいきません。(何も起こりません。) ちなみに、保存するためのディレクトリのパーミッションはその親ディレクトリを含め、(7,7,7)です。 「new.jpg(相対パス)」を「/www/.../new.jpg」のように絶対パスを使ってやっても結果は同じでうまくいきませんでした。 どのようにすれば、新しく作成した画像を保存できるのでしょうか? ちなみに、OSはLinux(Fedora10)です。もちろん、GDは先のテストで証明される通り、動作していると思います。 よろしくお願い致します。

    • 締切済み
    • PHP
  • PHPでGDライブラリを使って縮小した画像を直接表示したい

    PHPでGDライブラリを使って、「image.jpg」という画像(800x222のJPEGファイル)を、GETで渡した幅に縮小させたくて、次のように書きました。 -----reimage.php--------------------- <?php header("Content-Type:image/jpeg"); $old_width=800; $old_height=222; $width = htmlspecialchars($_GET['w']); $height = ($old_height / $old_width) * $width; $source = imagecreatefromjpeg("image.jpg"); $re_image = imagecreatetruecolor($width,$height); imagecopyresampled($re_image,$source, 0, 0, 0, 0,$width, $height, $old_width, $old_height); imagejpeg($re_image); imagedestroy($re_image); ?> -------------------------- 他のHTMLファイルから <img src="reimage.php?w=480"> などとすると縮小された画像が表示されるのですが、直接「reimage.php?w=480」を開くと、文字化けした文字列が並んでいるばかりで画像が表示されません。 firefoxでMIMEタイプを見てみると、「text/html」になっています。 >header("Content-Type:image/jpeg"); の部分がうまくいっていないのだと思いましたが、どう直せばいいのか分かりません。 なお、サーバーはxreaの広告免除を使っています。 まだPHPを勉強し始めて日が浅いので、見当違いなことを聞いているかも知れませんが、よろしくおねがいします。

    • ベストアンサー
    • PHP
  • HEADERについて

    無知でお恥ずかしいのですが、PHPで出力する際 header("Content-Type: text/html;charset=EUC-JP"); などと最初にヘッダーを出力すると思うのですが、例えばtest.phpが以下のようになっていた場合でもPHPでヘッダーを出力する必要があるのでしょうか? test.php ※1<?php header("Content-Type: text/html;charset=EUC-JP"); ?> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="TEXT/HTML; CHARSET=EUC-JP"> <TITLE></TITLE></HEAD> <BODY> TEST <?php echo $test; ?> </BODY> </HTML> 参考書などを見てみると「全ての出力の前に記述する必要がある」と書いてあるだけで、書かずとも正常に表示されますし、仮に文字化けしても <META HTTP-EQUIV="Content-Type" CONTENT="TEXT/HTML; CHARSET=EUC-JP"> と追加すれば文字化けも解決するので、疑問は感じつつも思い出したときにPHPにもヘッダを記述するようにしていたのですが、少しづつPHPを勉強しやれる事が増えてくる内に、記述してあるものと記述して無いものが混在してきて気持ち悪く感じてきました。 皆さんはどのようにされていますか? ※他サイトで配布されているPHPスクリプトなども見てみたのですが、毎回記述している方、一切記述していない方それぞれでした。 あと、全く違う質問ですが、MYSQL接続中にエラー処理でexit;する場合、exit;する前にMYSQL接続を切断する必要ってあるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう