[PHP-users 5854] Re: ファイルの削除

HASHIMOTO Keisuke php-users@php.gr.jp
Mon, 04 Mar 2002 15:55:26 +0900


こんにちは、はしもとです。

On Mon, 04 Mar 2002 15:30:09 +0900
GT <perl@getpresent.com> wrote:
> > readdir()でどのような文字列が返ってくるかは把握されていますか?
> 
> 指定したdir内のファイル名を返すんですよね?

そう、そうなんです。
ファイルまたはディレクトリ名*のみ*を返すんです。

> > 一度、
> > 
> > $dir = opendir("./data/");
> > while($file = readdir($dir)){
> > print "[$file]\n";
> > }
> > closedir( $dir );
> > 
> > としてどのように表示されるかを確認されれば、おそらく原因が
> > わかるのではないか、と思います。
> 
> すいません。それがわからないのです。
> 帰ってきたファイル名を「filemtime($file);」とすると
> そのファイル毎の最終更新時刻が取得できるのではないのでしょうか?
> ところが最終更新時刻が帰ってくるファイルと帰ってこないファイルがあるのです。
> 同じdir内なのに a.html は12345678 と帰ってくるのに b.jpg は空です。
> どこに問題があるのか私にはわかりません。

えっと、ボクが書いたコードは試しに実行してもらえましたか?
頭の中だけで考えても原因はわかりませんよ。

readdir()で取得したファイル名は、上でも書いたように、ファイル名
しか返されません。
なので、filemtime()を呼び出すときは、
filemtime($file);
ではなくて
filemtime( "./data/$file" );
のように、ディレクトリパスも考えないといけません。

perlで、GTさんが書かれていたように
> foreach $file (<./hoge/*>) {
とした場合、$fileには './hoge/a.html' みたいに、ディレクトリ
パスも一緒に代入されるはずです。

最終更新時刻が取れたというa.htmlは、たまたまPHPファイルと同じ
ディレクトリにもa.htmlがあって、そのファイルの最終更新時刻が
返されているのではありませんか?

> 上手く動作していないコードを公表するのに抵抗がありまして...^^;
> なにこれって思われそうで...

まぁ確かにコードを公表するのはボクも恥ずかしいですが(^_^;。
必要な情報は公開しないと問題解決には繋がりませんよ。

#================================================================#
  橋本 敬介  - HASHIMOTO Keisuke -
    Plain Text mailto:ksk@be.to
#================================================================#