|
|
|
| Есть такой код:
$dh = opendir($dir);
while( $files = readdir($dh) ) {
if( $files != '.' && $files != '..') {
print "<b>". ( is_dir($files) ? 'DIR': 'FILE' )."</b>: $files<br>";
}
}
|
Выводит список файлов и каталогов и везде пишет, что файл не является каталогом.
FILE HTML (4-1.01).html
FILE plugin1
FILE htmlForms
FILEadminPanelOptions
На самом деле (plugin1, htmlForms, adminPanelOptions) - это каталоги | |
|
|
|
|
|
|
|
для: kostiaGt
(20.02.2010 в 19:35)
| | Потому, что is_dir($files) смотрит не в $dir, а в папке, где находится файл с приведённым Вами скриптом. А в этой папке нет $files и по этому из условия is_dir($files) ? 'DIR': 'FILE' возвращает FILE.
Т. е. работает всё правильно, но запрограммировано не то, что Вам надо. | |
|
|
|
|
|
|
|
для: Yuriev
(20.02.2010 в 20:12)
| | нет, я в переменную $dir указал имя папки. Скрипт открыл эту папку и вывел списко папок и файлов. В этом каталоге находятся один файл (HTML (4-1.01).htm) и три папки (plugin1, htmlForms, adminPanelOptions). Строка кода, которая выводит этот список (
print ( is_dir($files) ? 'DIR': 'FILE' )." $files<br>";
| ) проверяет, используя функция , какой элемент в выводимом списке является папкой, а какой файлом (делается это просто для примера).
Я ожидаю получить вот такой результат:
FILE HTML (4-1.01).html
DIR plugin1
DIR htmlForms
DIR adminPanelOptions
а получаю:
FILE HTML (4-1.01).html
FILE plugin1
FILE htmlForms
FILE adminPanelOptions | |
|
|
|
|
|
|
|
для: kostiaGt
(20.02.2010 в 20:34)
| | opendir($dir) - это открыть папку, а не сделать ее текущей
is_dir смотрит в папку по умолчанию текущую т.е. в папку где лежит скрипт, а не в папку $dir.
Скажите ему чтоб смотрел в папку $dir например так is_dir($dir.'/'.$files)
... и будет Вам счастье! | |
|
|
|
|
|
|
|
для: Yuriev
(20.02.2010 в 21:08)
| | я указал папку и скрипт открыл эту папку и вывел в этой папке список файлов и каталогов.
вот другой пример:
/*
В переменную $dir передал имя каталога (plugins)
Структура каталога plugins:
| plugins (каталог)
---| plugin1(каталог)
---| htmlForms (каталог)
---| adminPanelOptions (каталог)
---| HTML (4-1.01).html (файл)
*/
$dir = 'plugins';
$dh = opendir($dir);
while( $files = readdir($dh) ) {
if( $files != '.' && $files != '..') {
print "\$dir [$dir] ".( is_dir($files) ? 'DIR': 'FILE' )." $files<br>";
}
}
|
Выыодит:
$dir [plugins] FILE HTML (4-1.01).html
$dir [plugins] FILE plugin1
$dir [plugins] FILE htmlForms
$dir [plugins] FILE adminPanelOptions | |
|
|
|
|
|
|
|
для: kostiaGt
(20.02.2010 в 21:18)
| | 1. Напишите так is_dir($dir.'/'.$files)
2. Запустите скрипт и убедитесь, что теперь печатает правильно.
3. Перечитайте то, что я писал выше
4. Если будет всё равно непонятно почему теперь печатает правильно, то значит PHP создан "криво" и с ним не стоит связываться | |
|
|
|
|
|
|
|
для: kostiaGt
(20.02.2010 в 21:18)
| | Ты не понимаешь. Ещё раз: opendir() не делает каталог $dir текущим. Чтобы было понятнее, замени is_dir($files) ? 'DIR' : 'FILE' на file_exists($files) ? 'EXISTS' : 'NOT EXISTS'
> 4. Если будет всё равно не понятно почему теперь печатает правильно, тго значит PHP создан "криво" и с ним не стоит связываться
Тебе рано советы давать | |
|
|
|
|
|
|
|
для: Тень&
(20.02.2010 в 22:42)
| | Да, дествительно, у Вас, Тень&, объяснять получается лучше. Дерзайте!
А я пойду читать справочник. | |
|
|
|
|
|
|
|
для: Тень&
(20.02.2010 в 22:42)
| | Ребята извините. Я, наверное, полный баран в php но, вот у меня скрипт выводит список файлов и каталогов, как мне определить какой файл является файлом, а какой каталогом?. Я так понимая, что это должна делать функция is_dir но, у меня эта функция показывает, что каталогами являются и файлы.
Пожалуйсто напишите скрипт, который выводил список файлов и каталогов и определял где файл, а где каталог. | |
|
|
|
|
|
|
|
для: kostiaGt
(20.02.2010 в 22:53)
| |
$dir = 'plugins';
$dh = opendir($dir);
while( $files = readdir($dh) ) {
if( $files != '.' && $files != '..') {
print "\$dir [$dir] ".( is_dir($dir.'/'.$files) ? 'DIR': 'FILE' )." $files<br>";
}
}
|
| |
|
|
|
|
|
|
|
для: Yuriev
(20.02.2010 в 22:54)
| | да, все правильно. Но, когда функция is_dir встречается с файлом (is_dir('someFile.html') ) она выдает, что это каталог ( var_dump( is_dir('someFile.html') ) - bool(true) ) | |
|
|
|
|
|
|
|
для: kostiaGt
(20.02.2010 в 23:01)
| | Извини, но пишу последний раз
Дело в том, что происходит так: is_dir('someFile.html') ,
а должно быть так: is_dir('plugins/someFile.html')
Подчеркиваю, вот так: is_dir($dir.'/'.$files) | |
|
|
|
|
|
|
|
для: Yuriev
(20.02.2010 в 23:25)
| | От того, что путь пропущен, кмк, someFile.html ни с того ни с сего каталогом не станет. | |
|
|
|
|
|
|
|
для: Trianon
(20.02.2010 в 23:34)
| | >От того, что путь пропущен, кмк, someFile.html ни с того ни с сего каталогом не станет.
Разъясните к чему Ваше замечание. Ни участники разговора ни скрипт не воспринимали someFile.html папкой. И что есть "кмк"? | |
|
|
|
|
|
|
|
для: Yuriev
(21.02.2010 в 05:26)
| | У нас КМК это Кузнецкий Металлургический Комбинат. А у Trianon'a по всей видимости - "как мне кажется".
А по сути - я воспроизвел Вашу ситуацию и результат положительный:
$dir [plugins] FILE someFile.html
| так что дело не в бобине. Может глючит где то сервер (фантастика конечно). | |
|
|
|
|
|
|
|
для: Николай2357
(21.02.2010 в 06:41)
| | Сразу глючит сервер, ага.
Я думаю в порядке убывания вероятности это будет последний пункт. Первый -- автор что-то перепутал и подставлял не то (как неоднократно в этом топике он и делал). Второй вариант: там просто есть папка "someFile.html" (а почему бы и нет?) | |
|
|
|
|
|
|
|
для: Тень&
(21.02.2010 в 12:28)
| | Не сразу))) это шутка была. Обычно когда что то не получается, первым делом грешат на компьютер. А дело вовсе не в бобине. | |
|
|
|
|
|
|
|
для: Yuriev
(21.02.2010 в 05:26)
| | >Ни участники разговора ни скрипт не воспринимали someFile.html папкой.
Даже здесь?
> автор: kostiaGt (20.02.2010 в 23:01) для: Yuriev (20.02.2010 в 22:54)
>да, все правильно. Но, когда функция is_dir встречается с файлом (is_dir('someFile.html') ) она выдает, >что это каталог ( var_dump( is_dir('someFile.html') ) - bool(true) )
А по-моему скрипт его именно так и воспринял.
Вообще-то вся тема тредстартером инициирована по причине, что у него скрипт файлза каталог принимает.
Замечание мое было вызвано тем, что Ваш ответ на это поведение свет не пролил.
>И что есть "кмк"?
Про кмк пояснил Николай. | |
|
|
|