is_file и is_dir не определяют все содержимое

Эдди

Новичок
Даже стыдно задавать такой вопрос. Но ничего не понимаю.

Сканирую директорию:
$dir='/home/путь/www/';
$files=scandir($dir);

В массиве есть все содержимое.

Проверяю, файл или директория:
foreach($files as $f)
{
if(is_dir($f))
echo '<br>'.$f.';
elseif(is_file($f))
echo '<br>'.$f.';
}

И в результате выводятся из всех каталогов только "." и "..".
А из файлов только "index.php", хотя там еще куча других файлов.
 

movRAX

Новичок
Если скрипт находится не в той же директории, то вы совершили довольно нелепую ошибку
PHP:
foreach ( $files as $f ) {
    if ( is_dir( $dir . $f ) )
        echo '<br>'.$f;
    elseif ( is_file( $dir . $f ) )
        echo '<br>'.$f;
}
 

movRAX

Новичок
Можно еще более элегантно получить все файлы
PHP:
$files = glob('/home/xxx/www/*');
foreach( $files as $file )
    echo is_file($file)? 'file: ' . $file : 'dir: ' . $file, '</br>';
 

Эдди

Новичок
Да не. И так нормально. Мне только директории нужны, а потому
PHP:
foreach($files as $f)
{if(is_dir($dir.$f)) echo '<br>'.$f}
вполне устраивает.

Вот только одного не могу понять. Я без пути пытался проверить. И откуда-то взялся там index.php, хотя я его в корне не вижу.
Ну, буду думать, что это хостера уловки.
 
Сверху