is_dirを含むスクリプトを他階層から実行する場合の注意 (自分用メモ
あるディレクトリのファイル一覧取得して、File か Directory かを調べる簡単なscript
check_dir.php は "/home/ryoff/prac_php/" にあるとする。
-- prac_php |-- check_dir.php |-- fuga.php `-- hoge `-- foo.php
vi check_dir.php
<?php $dir = "/home/ryoff/prac_php/"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (is_dir($file)) { echo "DIR : " . $file . "\n"; } else { echo "FILE: " . $file . "\n"; } } closedir($dh); } } ?>
これを、check_dir.php が置いてある階層以外からたたくと、
FILE: fuga.php FILE: check_dir.php DIR : .. FILE: hoge DIR : .
こんな感じで、hoge は Directory のはずなのに、File と認識されてしまった。
Perlでもこんなことあったな。
と思った。
自作モジュールをuseするときの注意点 - 雑想空間
Perlだと[FindBin]があるからいいんだけど、phpだとどうすればいいんだろう?
if (is_dir($dir.$file)) {
とりあえず、絶対パスにして応急処置ww
あとで調べる