[PHP-users 16408]Re: headerってなによ?(was 他のディレクトリの変更)

misono @ o-misono.com misono @ o-misono.com
2003年 7月 2日 (水) 23:03:33 JST


ysanoさん

レスを有り難う御座いました。良く解りました。

下記のものも例文なのですが、これでも最初つまずいたことから何故かなぁ〜と思ってい
たことがありました。
Sample167.php というファイルで img/Sample.jpg という画像を開くものなのですが、


<?php
  // ファイルをバイナリモードで開く
  $fp = fopen("img/Sample.jpg", "rb") or die();

  // ファイルサイズ分一気に読み込む
  $bin = fread($fp, filesize("img/Sample.jpg"));

  // 閉じる
  fclose($fp);

  // 出力
  header("Content-type: image/jpeg");
  print $bin;
?>

この出力の時点で header("Content-type: image/jpeg");
が宣言文ということですね・・・。

以前、もう一つ間違えたことがありました。それは この header を宣言してあるのにも
関わらず "text/html" の形式で記述し蹴られてエラーになって疑問に思っていたことが
あったのです。
これで謎が氷解してきました。

簡単に書けば・・・

  header("Content-type: image/jpeg");
  readfile("ディレクトリ + ファイル名");

だけでOKなのですね・・・。う〜んしかしこういうことがわからないと全然駄目ですね
・・・そしてこういう簡単なことを順序立ててマニュアルに書いてある訳ではないので何
を指示しているのかが見当がつかず結局わからなくなってしまっています。

一応疑問に思った関数や用語はマニュアルやここのMLの全文検索をするようにはしてい
るのですが・・・。


> この問題は中村さん自身が最初におっしゃっていたように、
> ApacheのAliasでももちろん解決できますよ。
> Alias /img/ "C:\Files\img"とか、かな。
> ただ、なるべくPHPでとのことだったので、みんなPHPで考えてます。

すみません。マニュアルを読んでいるとPHP だけでできそうとその時点で思ったからです。
そうすることで PHP のみの記述だけでOKになりますので・・・。
もちろん今となってはそれを聞いていて良かったと思っていますが・・・。
多謝です。m(_ _)m

文章で書くと長くなってしまいますね・・・。ホントに有り難う御座います。他の方でこ
れからPHP をはじめようと思われる方が全文検索でこの記述を読めば「ああ〜そういうこ
とか〜」と納得すると思います。

html だと <img src="1.jpg"> は自動的に判断してくれるが
PHP ファイルを指定された場合、宣言文でheader を宣言して表示しなさい。
ということですね・・・。それにより Apache から PHP のファイルであることを理解し
実行することができるということですよね・・・。

記述文なら2行なのに・・・σ(^_^;)

> 普段headerなんか使って無いのに・・・って思うかもしれませんが、
> php.iniで
> default_mimetype = "text/html"
> ってありますよね。これは何もheader()関数で指定して無い場合はhtmlファイル
> として解釈してね、とブラウザに知らせているということなのです。
> この場合のヘッダも確認できますので試してください。
> 
理解できました。有り難う御座います。

これからもどうぞ宜しくお願い致します。

こちらの環境は、 Windwows XP HomeEdition Version 2002 Service Pack 1
Pentium(R) 4 CPU 1.70GHz 512 MB RAM 

Apache/1.3.27 Server at localhost Port 80
PHP Version 4.3.2

中村
mail: misono @ o-misono.com
http://www.o-misono.com/


PHP-users メーリングリストの案内