[PHP-users 16482]Re: [PHP-users16334]他のディレクトリの変更

yama yamamoto @ joeswebhosting.net
2003年 7月 4日 (金) 06:44:56 JST


php初心者 山本です。

> <?php 
> $full_Path = "c:/www/1.jpg";
> print $full_Path;
>   header("Content-type: image/jpeg");
>   readfile($full_Path);
> 
> ?>
> 
> だと画像が表示されません。
> print 文が影響しているのですが・・・何故?

printにより暗黙の内にhttpヘッダが送信されたと言うだけの事ではないでしょ
うか。それをphpの実装はフラグでもっていて、再度ヘッダを送信し様としてい
るので、

> Warning: Cannot modify header information - headers already sent by (output 
> started at c:\program files\apache group\apache\htdocs\php\pictureviewtest.php:8)
>  in c:\program files\apache group\apache\htdocs\php\pictureviewtest.php 

といっているのではないでしょうか。

telnet localhost 80 で見てみても良いと思います。

header関数の説明の一部を抜粋します。

覚えておいて頂きたいのは、header() 関数は、通 常の HTML タグまたは PHP 
からの出力にかかわらず、すべての実際の出 力の前にコールする必要があるこ
とです。 頻出するエラーとして、include() または require() 関数、他のファ
イルをアクセスする関数 に空白または空行があり、header() の前に出力が 行
われてしまうというものがあります。同じ問題は、単一の PHP/HTMLファ イルを
使用している場合でも存在します。 

> <?php 
> $dirPath = "c:/My Documents/01gazoFolder/";
> $dirDatePath = "2003/200306/20030610/";
> $filename = "000019_20030610_S001.JPG";
> $full_Path = $dirPath.$dirDatePath.$filename;
>   header("Content-type: image/jpeg");
>   readfile($full_Path);
> ?>
> 
> とするとこれも
> 
> Warning: Cannot modify header information - headers already sent by (output 
> started at c:\program files\apache group\apache\htdocs\php\pictureviewtest.php:8)
>  in c:\program files\apache group\apache\htdocs\php\pictureviewtest.php 
> 
> というエラーメッセージがでて表示されません。
> 
> しかし readfile のところを
> readfile("c:/My Documents/01gazoFolder/2003/200306/20030610/000019_20030610_S001.
> JPG");
> 
> と変更すると表示されます。
> 
> 変数が入ると変化するのでしょうか? 変数が文字列として渡っていない?
> 変数の特別な仕様がある?
> Windows のディレクトリ構造やファイルの構造に注意が必要?
> 上記のようにディレクトリが My Documents のところのように スペースがあるからおか
> しくなる?
> ("c:/www/1.jpg"を変数にした場合でも同様の現象がでているからそれは考えにくいと思
> うのですが・・・)

エラーメッセージのまま受け取ればよいと思います。
つまり、ヘッダは既に送信されているので、変更不可であると言う事です。

やはり、telnet localhost 80をお奨めします。

> 
> また$full_Path を print すると
> c:/My 
> Documents/01gazoFolder/2003/200306/20030610/000019_20030610_S001.JPG");
> 
> とMy の後に改行が入ってしまうように print されたりします。
> 
> これはWindowsによって起こる現象ですか?
> それとも何か変数の使用について注意する点があるのでしょうか?

単に、使用しているエディタかビューアでブランク部分で折り返し表示されてい
るだけとかではないでしょうか。

違っていたらすみません。



On Fri, 4 Jul 2003 05:31:57 +0900
misono @ o-misono.com wrote:

> 皆さん
> お世話になっております。
> 
> やはり勉強不足の中村です。σ(^_^;)
> 
> しつこく質問させて頂いて宜しいでしょうか?
> 
> この問題ある程度理解できたと思ったのですが、とても簡単なこと(つまり画像を表示さ
> せる)ということ・・・。セキュリティのこととかは別問題として兎に角単純に画像を表
> 示させるということに限定し確認してみたのですが・・・。
> 
> <?php
>   header("Content-type: image/jpeg");
>   readfile("c:/www/1.jpg");
> ?>
> 
> だと画像が表示されます。
> 
> <?php 
> $full_Path = "c:/www/1.jpg";
> //print $full_Path;
>   header("Content-type: image/jpeg");
>   readfile($full_Path);
> ?>
> これでも画像が表示されますが
> 
> <?php 
> $full_Path = "c:/www/1.jpg";
> print $full_Path;
>   header("Content-type: image/jpeg");
>   readfile($full_Path);
> 
> ?>
> 
> だと画像が表示されません。
> print 文が影響しているのですが・・・何故?
> 
> また
> 
> <?php 
> $dirPath = "c:/My Documents/01gazoFolder/";
> $dirDatePath = "2003/200306/20030610/";
> $filename = "000019_20030610_S001.JPG";
> $full_Path = $dirPath.$dirDatePath.$filename;
>   header("Content-type: image/jpeg");
>   readfile($full_Path);
> ?>
> 
> とするとこれも
> 
> Warning: Cannot modify header information - headers already sent by (output 
> started at c:\program files\apache group\apache\htdocs\php\pictureviewtest.php:8)
>  in c:\program files\apache group\apache\htdocs\php\pictureviewtest.php 
> 
> というエラーメッセージがでて表示されません。
> 
> しかし readfile のところを
> readfile("c:/My Documents/01gazoFolder/2003/200306/20030610/000019_20030610_S001.
> JPG");
> 
> と変更すると表示されます。
> 
> 変数が入ると変化するのでしょうか? 変数が文字列として渡っていない?
> 変数の特別な仕様がある?
> Windows のディレクトリ構造やファイルの構造に注意が必要?
> 上記のようにディレクトリが My Documents のところのように スペースがあるからおか
> しくなる?
> ("c:/www/1.jpg"を変数にした場合でも同様の現象がでているからそれは考えにくいと思
> うのですが・・・)
> 
> また$full_Path を print すると
> c:/My 
> Documents/01gazoFolder/2003/200306/20030610/000019_20030610_S001.JPG");
> 
> とMy の後に改行が入ってしまうように print されたりします。
> 
> これはWindowsによって起こる現象ですか?
> それとも何か変数の使用について注意する点があるのでしょうか?
> 
> 単純に画像を表示させることもできなければセキュリティ以前の問題です。σ(^_^;)
> こんな単純に思えることが何故起こるのでしょう。
> 
> しつこく質問して申し訳ありませんが宜しくお願い致します。m(_ _)m
> 
> こちらの環境は、 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 mailing list
> PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> 



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