![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Люди, такой к вам вопрос:
У меня скрипт сканит по локальной сети компы.Он рекурсивно азаходит в каждую папку и просматривает содержимое. и все бы хорошо, но обнаружилась проблема: некоторые файлы( мной в частности обнаружен файл .ppt) почему то считает папками и пытаеться в них зайти. происходит слеюующее: он находит какой то вложенный в эту папку файл 1.jpg - считает его тоже папкой и снова в него заходит, потом снова и снова. Пока не зависает скрипт. функции is_dir и filetype не помогают - он определяет файл как папку ![]() С чем это может быть связано и как это можно обойти? |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Функции is_dir, is_file — кэшируются. В начале всех этих операций поставь clearstatcache()
|
|||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
не помогло (((
нашел еще один глючный файл - он сохранен в content.ie5. Это doc. название в формате : "/%D0%BF%D0%BB%D0%B0%D0 . . ." не открываеться не изменяеться имя, не удаляется. Такие файлы, как видимо есть почти на всех сканруемых машинах . . . |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Тогда проверяй так:
|
|||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Тоже не помогло
fileperms для этих файлов возвращает те же значения что и для папок(остальные права совпадают). может как то искусственно можно проверить, например по какому нибудь параметру, который есть у файлов и нет у папок или наоборот. |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Может в архиве выложишь тестируемые файлы, чтобы можно было бы независимый эксперимент провести?
|
|||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Это какие то глючные файлы. Я скопировал папку, содкржащую файл, на свою машину - они нормально стали открываться, и видятся как файлы. а на чужой машине, я конкретно этот файл не могу ни скопировать, не удалить - ни че с ним не могу сделать, даже свойства посмотреть.
|
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Так это файлы типа ntuser.dat, к которым запрещён доступ даже на чтение?
|
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
Наверное еще и винда 98-я....
|
|||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Винда 2000 sp4.
подобные файлы встречаются на очень многих машинах - разные расширения. Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Попробуй к имени файла перед проверкой применять функцию urldecode('<имя файла>');
|
|||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Ет как?
Он название если декодирует, то найти тогда такой файл не может |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
||||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
все равно пасиба.
|
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
А что, если запустить через PHP команду DOS dir /a и парсить вывод этой команды. А имена проверять на символ процента (с процентами ведь глюки идут? это вобще-то запрещённые символы, из-за этого может и быть трабла), если встретили в имени процент, запускаем dir /a и смотрим, что нам эта команда говорит на этом файле.
Покажи вывод dir /a в том каталоге. Это сообщение отредактировал(а) Ciber SLasH - 20.4.2006, 14:35 |
|||
|
||||
Medwoodu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 20.4.2006 Где: Москва Репутация: нет Всего: нет |
Возможно стоит так же проверить атрибуты данных файлов?
|
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: нет Всего: 67 |
Ещё есть функция filetype(), которая возвращает тип файла, в типах присутствуют также file и dir. Только перед вызовом нужно вызвать clearstatcache(), т.к. эта результат этой функции кэшируется.
|
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
Я практически уверен что все эти функции работают одинакоао просто проверяя аттрибут файла - является ли он директорией.
Думаю разницы никакой не будет... Имя файла просто невалидное. Так бывает. IE например частенько создает файлы, которые даже средствами самой винды (explorer) а так же TC или Far не удалить. Вот так. Приходится заходить в папку и делать c:\temp>erase *.* Так удаляет. А по другому с такими файлами ничего не сделаешь. Вот такое мегатворение от Майкрософт. |
|||
|
||||
Janus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 26.9.2005 Репутация: нет Всего: 1 |
По-моему, это просто Windows не разрешает. В этих папках копаться - себе дороже, программисты Windows там такого намутили! Система как-то по особому себя ведет с этими каталогами и с файлами внутри них. Вполне возможно, что это даже и не файлы, а ссылки на файлы.
P.S. А файловая система-то какая? --------------------
Проект "Репликатор" |
|||
|
||||
Ddima |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 23.1.2006 Репутация: нет Всего: нет |
Я тож думаю, что все эти функции просто проверяют атрибуты. пробовал и filetype() - тож самое. я подумал так - если не могу предотвратить - то буду бороться со следствиями этой ошибки. пришлось сделать так - если он начинает в файл заходить - много раз подряд - я это просто отслеживаю и возвращаю функцию на то место, где он начал глючить. Начинаю со следующего файла. Так оно конечно коряво, но как бы пока что другого выхода я не нашел, а так вроде работает. ))
Добавлено @ 11:18 Файловая система NTFS, а ссылки filetype возвращает link |
|||
|
||||
Janus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 26.9.2005 Репутация: нет Всего: 1 |
Ну дык сделай проверку на link, и, ежели это link, то просто игнорируй!
--------------------
Проект "Репликатор" |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |