Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наличие директории 
:(
    Опции темы
ANDeath
Дата 22.7.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 9.4.2006
Где: Краснодар

Репутация: нет
Всего: нет



Подскажите как средствами php проверить существует ли директория?
С файлами вроде все просто: можно юзать fopen, которая в подобном случае возвращает false, а вот с функциями opendir и dir, подобное, как показал опыт, не прокатывает...
Заранее благодарю... 
PM MAIL   Вверх
Rexar
Дата 23.7.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 14.12.2005

Репутация: нет
Всего: 0



is_dir
Проверка существования каталога.

Синтаксис :
bool is_dir(string filename)

Возвращает true, если каталог filename существует.
 
PM MAIL   Вверх
Mal Hack
Дата 23.7.2006, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Проверять opendir. 
PM ICQ   Вверх
GiV
Дата 23.7.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(Mal Hack @  23.7.2006,  01:56 Найти цитируемый пост)
Проверять opendir.  

В этом случае в логах будем Warning ловить. 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 23.7.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



и? is_dir глючит часто... А так - 100% результат. 
PM ICQ   Вверх
GiV
Дата 26.7.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(Mal Hack @  23.7.2006,  13:52 Найти цитируемый пост)
и?

и имеем жирные лог файлы =) или вообще на некоторых хостах юзер ловит в браузере. Да можно собаку, но кто то другой отлаживая код будет долго биться "а почему белый экран?!? и ошибок нет".

Цитата(Mal Hack @  23.7.2006,  13:52 Найти цитируемый пост)
is_dir глючит часто... А так - 100% результат.

пример. 
PM MAIL WWW ICQ   Вверх
S.A.P.
Дата 26.7.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Код

file_exists('directory/path/')



Цитата(GiV @  26.7.2006,  12:40 Найти цитируемый пост)
is_dir глючит часто... А так - 100% результат.

пример.  

вероятно глюки связаны с кешированием. Хотя результат file_exists тоже кешируется  smile .
 
PM MAIL   Вверх
GiV
Дата 26.7.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(S.A.P. @  26.7.2006,  12:55 Найти цитируемый пост)
вероятно глюки связаны с кешированием

это как? 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 26.7.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(GiV @  26.7.2006,  13:40 Найти цитируемый пост)
и имеем жирные лог файлы =) или вообще на некоторых хостах юзер ловит в браузере. Да можно собаку, но кто то другой отлаживая код будет долго биться "а почему белый экран?!? и ошибок нет".

Ты меня извини, конечно, но ОТЛАДКА скрипта должна производится по соответствующим концепциям. ПХП все дает настраивать. Система должна работать так, быть отлаженой так, чтобы никаких длинных лог файлов не было. А использование @ лично я считаю, простите, ламерством и неумением отловить ошибку. Да, есть случаи, когда @ НЕОБХОДИМА.

Цитата(GiV @  26.7.2006,  13:40 Найти цитируемый пост)
пример.  

А ты поработай с языком годика два на разных серверах, увидешь. 
PM ICQ   Вверх
GiV
Дата 26.7.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Хорошо, уважаемый.

Два клиента работают с директорией оба могут работать с ней (читать, переименовывать и даже удалять). Как мы будем проверять на ДЕЙСТВУЮЩЕМ проекте существование директории? В релизе (на работающем сервере) я не хочу отключать ошибки (уровень E_ALL & ^E_NOTICE) - пишу их в лог файл.

Ваши действия?
 
PM MAIL WWW ICQ   Вверх
arial
Дата 26.7.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



@opendir - ошибки в логах нет. 


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
Mal Hack
Дата 26.7.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(GiV @  26.7.2006,  21:38 Найти цитируемый пост)
В релизе (на работающем сервере) я не хочу отключать ошибки (уровень E_ALL & ^E_NOTICE) - пишу их в лог файл.

А вот тут, и есть проблема. В релизе, работающей системе, вывод ошибок ДОЛЖЕН БЫТЬ ПОДАВЛЕН !!! Система должна работать так, чтобы не генерировать ошибки. Это - качество. Учите технологию.
Что касается лога, то...Я не думаю, и как показывает практика, он не такой ж и огромный... И Некоторые вещи можно и в лог писать и время от времени чистить. 
PM ICQ   Вверх
GiV
Дата 27.7.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(Mal Hack @  26.7.2006,  21:16 Найти цитируемый пост)
Система должна работать так, чтобы не генерировать ошибки. 

Совсем, совсем? Т.е. Вы хотите сказать, что ситуация с отвалившимся SQL сервером (выдается Warning) является штатной и в логах отражаться не должна?

Цитата(Mal Hack @  26.7.2006,  21:16 Найти цитируемый пост)
В релизе, работающей системе, вывод ошибок ДОЛЖЕН БЫТЬ ПОДАВЛЕН !!!

Отлично, рассмотрим ситуацию №2. Вы пошли по принципу подавление вывода ошибок (как я понял система, даже если и имеет ошибку ни за что не выведет ее в браузер (кроме E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING) и не запишет в лог). Поставили error_reporting(0) или @opendir(). Все отлично, все работает, все замечательно. Прошел год, Вы ушли со старой работы на новую, на Ваше место пришел другой программист. Система все так же работает нормально, но попросили нового человека модифицировать работу системы как раз там в области работы с директориями (например ситуацию №1 реалтзовать). Естественно по доброте душевной Вы не оставили dev версии и работа будет осуществляться с release версией.

Ну и последнее, наверное. http://www.php.net/opendir - Example 1. opendir() example. Не думаю, что создатели мана желают плохого =)

P.S. ради интереса посмотрел проблемы по is_dir. Первая проблема, всегда возвращает true под Win XP sp2 имя директории > 256 символов. И под *NIX с правами доступа, если не хватает прав на чтение - всегда true. Обе специфичны...

 
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 27.7.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(GiV @  27.7.2006,  12:33 Найти цитируемый пост)
Т.е. Вы хотите сказать, что ситуация с отвалившимся SQL сервером (выдается Warning) является штатной и в логах отражаться не должна?

Да? А обработать нельзя? В 5 уже и try/catch есть...
Цитата(GiV @  27.7.2006,  12:33 Найти цитируемый пост)
Отлично, рассмотрим ситуацию №2. Вы пошли по принципу подавление вывода ошибок (как я понял система, даже если и имеет ошибку ни за что не выведет ее в браузер (кроме E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING) и не запишет в лог). Поставили error_reporting(0) или @opendir(). Все отлично, все работает, все замечательно. Прошел год, Вы ушли со старой работы на новую, на Ваше место пришел другой программист. Система все так же работает нормально, но попросили нового человека модифицировать работу системы как раз там в области работы с директориями (например ситуацию №1 реалтзовать). Естественно по доброте душевной Вы не оставили dev версии и работа будет осуществляться с release версией.

И? ПОдавленмие ошибок выключается на уровне сервера через .htaccess, этим отличается релиз версия от дебага...

Цитата(GiV @  27.7.2006,  12:33 Найти цитируемый пост)
Ну и последнее, наверное. http://www.php.net/opendir - Example 1. opendir() example. Не думаю, что создатели мана желают плохого =)

Не пожелают, но создатели мана пишут его для самых тупых, для того, чтобы можно было понять суть. Переносить полностью код из мана в реальный проект не всегда оптимально и правильно !!! 
PM ICQ   Вверх
GiV
Дата 27.7.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 13.7.2006
Где: rus|53

Репутация: 4
Всего: 9



Цитата(Mal Hack @  27.7.2006,  14:43 Найти цитируемый пост)
Да? А обработать нельзя? В 5 уже и try/catch есть...

Я не спорю про обработку =) 
if (!$handler ) { die('Error'); }
Но лог полезен что бы того же хостера потыкать носом. Тут тебе и время и служебная информация.

Цитата(Mal Hack @  27.7.2006,  14:43 Найти цитируемый пост)
И? ПОдавленмие ошибок выключается на уровне сервера через .htaccess, этим отличается релиз версия от дебага...

Ушел включать на Apache c AllowOverride None в httpd.conf и IIS.

Цитата(Mal Hack @  27.7.2006,  14:43 Найти цитируемый пост)
Не пожелают, но создатели мана пишут его для самых тупых, для того, чтобы можно было понять суть. Переносить полностью код из мана в реальный проект не всегда оптимально и правильно !!!  

что Вы так нервничаете? =)  Мне вот не ясно какая суть преследовалась при использовании is_dir() с opendir(), наверное, заговор супер-макак. 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1047 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.