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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с папками, удаление, переименовывание 
:(
    Опции темы
Bacardi
  Дата 30.1.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



... когда работал с одним единственным уровнем папок - все было зашибись....
когда же пришлось углубиться в сайт, наткнулся вот на какую лажу:
rmdir() удаляет директорию только в том случае, если она пуста... нашел на ru.php.net комменты товарисчей, мол типа их функции удаляют любые директории... потестил одну такую - теперь никак две тестируемые директории удалить не могу... пишет "диск переполнен или защищен от записи".
но основная проблема в другом.
функция другого товарисча выдает мне ошибку permissions denied при удалении... как мне ее обойти? при условии, что сижу на локальной машине и пока верстаю только сайтик.
вот листинги товарисча первого /после котого хрен удалишь/:
Код

function deleteDir($dir)
    {
   if (substr($dir, strlen($dir)-1, 1) != '/') $dir .= '/';
   if ($handle = opendir($dir)){
       while ($obj = readdir($handle)){
           if ($obj != '.' && $obj != '..'){
               if (is_dir($dir.$obj)){
                   if (!deleteDir($dir.$obj)) return false;}
               elseif (is_file($dir.$obj)){
                   if (!unlink($dir.$obj)) return false;}}}
       closedir($handle);
       if (!@rmdir($dir)) return false;
       return true;}
   return false;
    }

и второго:
Код

function SureRemoveDir($dir) {
   if(!$dh = opendir($dir)) return;
   while (($obj = readdir($dh))) {
     if($obj=='.' || $obj=='..') continue;
     if (!unlink($dir.'/'.$obj)) {
         SureRemoveDir($dir.'/'.$obj);
     } else {
         $file_deleted++;
     }
   }
   if (rmdir($dir)) $dir_deleted++;


винда хр, апаче 2.0.55, пшп 4.4.0

Это сообщение отредактировал(а) Bacardi - 30.1.2006, 17:23
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Danox
Дата 30.1.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


=)
*


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

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



Ну если я не ошибаюсь надо php.ini покапатся smile диск защищен от записи сам подумай php скрипт удаляет дериктории smile
Вроде была статейка по настройке этого дела smile

Это сообщение отредактировал(а) Danox - 30.1.2006, 17:34
PM MAIL   Вверх
Bacardi
Дата 30.1.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Danox
акей. поищу. спасибо!
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
BIG BROTHER
Дата 30.1.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 9.12.2004
Где: Россия, Москва

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



такие ошибки могут указывать, что запрещено удаление. Если винда, то не стоит-ли случайно read-only ?

Добавлено:

например, первая функция у меня даже при error_reporting E_ALL сработала отлично с очень глубокой вложенностью

Это сообщение отредактировал(а) BIG BROTHER - 30.1.2006, 17:41
--------------------
Mess with the best, die like the rest
PM MAIL ICQ   Вверх
Bacardi
Дата 30.1.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



BIG BROTHER
папки я создал этим же скриптом... никаких специальных аттрибутов не ставил... врядли стоит ридонли... ведь переименовывает.
Добавлено @ 17:41
Danox
не нашел smile((
Добавлено @ 17:43
BIG BROTHER
эээээ... чо за делы?!
может у тебя какие-то другие настройки... хз чего стоят?) я просто не знаю где это надо настраивать... по идее в апаче... он же дает разрешения на разные операции, отслеживает их и т.п.
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 31.1.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Модератор: зачем создавать две темы

Bacardi, тебя в МПТ не научили чтоли пробовать?
Не пустая директория спокойно переименовывается.
Не пустая директория может быть удалена, через system вызовом команды shell или рекурсивных обходом, который уже давно лежит в FAQ.
PM ICQ   Вверх
Bacardi
Дата 31.1.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Mal Hack @ 31.1.2006, 19:19 Найти цитируемый пост)

Bacardi, тебя в МПТ не научили чтоли пробовать?

ой... надо же... утечка информации прошла.)
Цитата(Mal Hack @ 31.1.2006, 19:19 Найти цитируемый пост)

Не пустая директория спокойно переименовывается.

мысль, что не может спокойно переименовываться ко мне пришла в голову после того, как rmdir() переименовывал спокойно пустую, а на не пустой той же директории выписывалось permission denied smile
Цитата(Mal Hack @ 31.1.2006, 19:19 Найти цитируемый пост)

Не пустая директория может быть удалена, через system вызовом команды shell или рекурсивных обходом, который уже давно лежит в FAQ.

такому меня в мпт точно не учили smile(((
пошел в фак читать.
спасибо.
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 31.1.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Bacardi вообще-то это в любом языке так. Я про удаление не пустой директории.. Нужен рекурсивный обход.
PM ICQ   Вверх
Bacardi
Дата 31.1.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Mal Hack
а почему rename при переименовывании не пустой дир, пишет permission denied?
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
mr.fox
Дата 31.1.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: -1
Всего: 2



Bacardi.. потому что доступа нету!
PM MAIL WWW ICQ   Вверх
Bacardi
Дата 31.1.2006, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



mr.fox
на этой директории права доступа: drwxrwxrwx... php ее создал... почему создать может, пустую переименовать может, пустую удалить может, а переименовать забитую нет?
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Bacardi
Дата 1.2.2006, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Фокс-покус! Или проведем эксперимент!

Создаю директории кодом (из мозгов):
Код

<?
mkdir('test');
chdir('test');
mkdir('test1');
mkdir('test2');
chdir('test1');
mkdir('test11');
mkdir('test12');
echo 'директория успешно создана<br>';
?>

после запускаю код (из фака винграда) /1/:
Код

$perms = fileperms($_GET['dir']);
if (($perms & 0xC000) == 0xC000) {
   $info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
   $info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
   $info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
   $info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
   $info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
   $info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
   $info = 'p';
} else {
   $info = 'u';}
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
           (($perms & 0x0800) ? 's' : 'x' ) :
           (($perms & 0x0800) ? 'S' : '-'));
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
           (($perms & 0x0400) ? 's' : 'x' ) :
           (($perms & 0x0400) ? 'S' : '-'));
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
           (($perms & 0x0200) ? 't' : 'x' ) :
           (($perms & 0x0200) ? 'T' : '-'));
echo $info."<br>";
?>

проверяю его для всех директорий, мне выводит:
drwxrwxrwx
запускаю код (http://ru.php.net/manual/ru/function.rmdir.php) /2/:
Код

<?
error_reporting(2047);
function rmdirr($dir) {
   if($objs = glob($dir."/*")){
       foreach($objs as $obj) {
           is_dir($obj)? rmdirr($obj) : unlink($obj);
       }
   }
   rmdir($dir);

rmdirr("test");
?>

И НИХРЕНА НЕ УДАЛЯЕТ!!!

создаю похожую структуру папок в проводнике windows xp sp2:
Код

пр. кн. мыши - создать - папку

после запускаю код (из фака винграда) /1/, получаю для всех директорий:
drwxrwxrwx
запускаю код (http://ru.php.net/manual/ru/function.rmdir.php) /2/, который мне все замечательно удаляет.

Вопрос: мне нажраться пойти или я чего-то не понимаю?
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 1.2.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Bacardi у тебя что винда северной версии? В несерверной прав доступа нет, т.е. нот они не стандартные.
PM ICQ   Вверх
Bacardi
Дата 1.2.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Mal Hack
да нет... не серверная... простая win xp professional...
ну скажи что не так?! почему не работает?! ну нельзя на папках вторые сутки сидеть!!!! smile
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 1.2.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Возьми отсюда ( http://vingrad.ru/PHP-ART-002993 ) рекурсию и на нее вешай удаление.
Тут стоит оговориться, что на винде глючить может несчадно.
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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