왜 is_file($file) 이 false값을 가지죠?
본문
$dirlist = scandir($dir);
foreach ($dirlist as $file){
//분명 여기시점에서 $file 값이 test.php 이 들어있거든요
if(is_file($file)){ //<= 그런데 왜 여기(if문)안으로 안들어올까요?
// $file 값은 여기에서 분명히 test.php입니다
어쩌구 저쩌구...
}
}
답변 6
$dir = './';
if ($dirlist = scandir($dir)) {
foreach ($dirlist as $file){
if (is_dir($file)) {
echo '<br>dir => ' . $file . '<br>';
continue;
} else if (is_file($file)) {
echo $file . '<br>';
} else
echo 'not file => ' . $file . '<br>';
}
} else
echo 'not dir';
혹시 파일이 php 실행하는 곳과 같은 경로에 있는건가요?
만약 경로가 다르다면 앞에 경로를 붙여주시면 됩니다.
보시면 파일 디렉토리 구분해서 저장 한 기본소스도 있으니 혹시나 참고 하시면 편하실거 같아서 올려둡니다.
최종적으로 무엇을 해야 되는지 이해가...
if문만 실행되면 되는건지 아니면
test.php 파일을 if문 안에서 사용해야 되는건가요?
아래처럼 echo 찍으면 어떻게 나오나요?
//분명 여기시점에서 $file 값이 test.php 이 들어있거든요
echo $file; <= 폴더내 전체 파일 출력됨
echo "<br>";
if(is_file($file)){ //<= 그런데 왜 여기(if문)안으로 안들어올까요?
// $file 값은 여기에서 분명히 test.php입니다
echo $file; <= 제일 마지막 파일만 출력되네요
파일에 test.php가 들어있다고 해도 경로가 같은건 아니죠
만약 처음에 들어가는 $dir이 실행하고 있는 php랑 다르면 경로가 들어가야죠 그 두개가 같다면 모르겠네요
도움이 못되고 댓글만 같네요
슈와이님께 ^^
댓글이 단락 구분이 안지어져서
여기에 새로 글 써드립니다
$dir = './main';
if(is_dir($dir)) {
recursive_file_list($dir);
}else{
echo "not a directory";
exit;
}
function recursive_file_list($dir){
$dirlist = scandir($dir);
foreach ($dirlist as $file){
if(($file==".")||($file=="..")){
continue;
}
if(is_dir($file)) {
recursive_file_list($file);
}
if(is_file($file)){
$temp = new SplFileInfo($file);
if($temp->getExtension()=="php"){
my_process();
}
}else{
echo $file."is not a file<br>";
}
}
}