Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Удаление файлов из списка указанного в txt

Ответить
Настройки темы
Удаление файлов из списка указанного в txt

Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: blacks2
Дата: 24-08-2009
Есть нижеследующий пример.
К нему необходимо добавить функцию удаления директорий (и поддиректорий)

Смотрел http://ru.php.net/manual/en/function.ftp-rmdir.php и пробовал подставлять
примеры от туда. Не получалось.

Решил обратиться к вам за помощью.
Если у кого есть уже готовый вариант то готов перейти на него - не принципиально
главное чтоб работало

Всем откликнувшимся заранее большущие спасибо!

PHP код: Выделить весь код

<?php
ini_set
('display_errors'1);
ini_set('display_startup_errors'1);
error_reporting(E_ALL);

$ftp_user_name '*';
$ftp_user_pass '*';
$ftp_server '*';

$conn_id=ftp_connect($ftp_server);
$login_result=ftp_login($conn_id$ftp_user_name$ftp_user_pass);
if(
$login_result) echo 'Connected.<hr><br>';
$pathes=file('files_to_delete.txt');

foreach (
$pathes as $path)
{
    
$path=trim($path);
    if(
ftp_delete($conn_id$path))
    {
        echo 
'Deleted -> '.$path.'<br>';
    }
}

ftp_close($conn_id);

?>


Отправлено: 01:05, 24-08-2009

 

Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


С помощью молодцов из саппорта хостинга удалось запустить последний пример. Но не нужный.


По мнению саппорта необходимо было внести следующие изменения:
(с такими "добавками" создание и удаление директории работает)

1. включить пассивный режим фтп - ftp_pasv($conn_id, true);

2. строки
if (ftp_mkdir($conn_id, $dir))
if (ftp_rmdir($conn_id, $dir))
сменить на
if (ftp_mkdir($conn_id, 'public_html/del/'.$dir))
if (ftp_rmdir($conn_id, 'public_html/del/'.$dir))


По основному решению:


К примерам из 10го и 12го поста все утро пробовал применить нижеследующие:

1й вариант - добавить пассивный фтп. Результат:
Цитата:
Из файла прочитанны следующие файлы
Array ( [0] => public_html/del2/ez/3/1.html [1] => public_html/del2/ez/3/ ) -------------
Перед выполнением скрипта:
array(4) { [0]=> string(56) "drwxr-xr-x 4 user www 512 Nov 14 2008 ." [1]=> string(57) "drwxr-xr-x 4 user (?) 512 Nov 14 2008 .." [2]=> string(62) "drwxr-xr-x 2 user (?) 512 Nov 14 2008 cgi-bin" [3]=> string(66) "drwxrwxrwx 17 user (?) 512 Aug 28 14:46 public_html" } -------------
Результат работы:

Warning: ftp_delete() [function.ftp-delete]: public_html/del2/ez/3/1.html: No such file or directory in /home/user/www/site/public_html/del/index2.php on line 31

Не удалось удалить public_html/del2/ez/3/1.html
Warning: ftp_rmdir() [function.ftp-rmdir]: public_html/del2/ez/3/1.html: Operation not permitted in /home/user/www/site/public_html/del/index2.php on line 39

Не удалось удалить директорию public_html/del2/ez/3/1.html
Warning: ftp_delete() [function.ftp-delete]: public_html/del2/ez/3/: No such file or directory in /home/user/www/site/public_html/del/index2.php on line 31

Не удалось удалить public_html/del2/ez/3/
Warning: ftp_rmdir() [function.ftp-rmdir]: public_html/del2/ez/3/: Operation not permitted in /home/user/www/site/public_html/del/index2.php on line 39

Не удалось удалить директорию public_html/del2/ez/3/ array(4) { [0]=> string(56) "drwxr-xr-x 4 user (?) 512 Nov 14 2008 ." [1]=> string(57) "drwxr-xr-x 4 user (?) 512 Nov 14 2008 .." [2]=> string(62) "drwxr-xr-x 2 user (?) 512 Nov 14 2008 cgi-bin" [3]=> string(66) "drwxrwxrwx 17 user (?) 512 Aug 28 14:46 public_html" }

2й вариант - добавить к пассивному фтп:

заменить
if(ftp_delete($conn_id, $path))
if (ftp_rmdir($conn_id, $path))
на
if(ftp_delete($conn_id, 'public_html/del/ez/'.$path))
if (ftp_rmdir($conn_id, 'public_html/del/ez/'.$path))
в files_to_delete.txt
ez/3/1.html
ez/3

Результат:
Цитата:
Не удалось удалить ez/3
Warning: ftp_rmdir() [function.ftp-rmdir]: public_html/del/ez/3: Operation not permitted in /home/user/www/site/public_html/del/index2.php on line 39

Не удалось удалить директорию ez/3 array(4) { [0]=> string(56) "drwxr-xr-x 4 user (?) 512 Nov 14 2008 ." [1]=> string(57) "drwxr-xr-x 4 user (?) 512 Nov 14 2008 .." [2]=> string(62) "drwxr-xr-x 2 user (?) 512 Nov 14 2008 cgi-bin" [3]=> string(66) "drwxrwxrwx 17 user (?) 512 Aug 28 14:46 public_html" }


а теперь что не так !?!?!?
(скоро сойду с ума)

Последний раз редактировалось blacks2, 29-08-2009 в 12:25.


Отправлено: 12:06, 29-08-2009 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Сегодня попробовал добавить пассивный фтп к примерам из 1го и 5го поста
Результат тот же - папки не удаляются

Отправлено: 17:45, 30-08-2009 | #22


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


blacks2, не надо сходить с ума. Надо писать директории правильно. Ни одна файловая система не даст создать файл или директорию со слэшем.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 23:12, 30-08-2009 | #23


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Igor_I:
Надо писать директории правильно. Ни одна файловая система не даст создать файл или директорию со слэшем. »
Попробовал продолжить попытки (в итоге они не увенчались успехом)


ПРИМЕР СОЗДАЕТ ДИРЕКТОРИЮ:
читать дальше »
Код: Выделить весь код
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$ftp_user_name = '*';
$ftp_user_pass = '*';
$ftp_server = '*';

$conn_id=ftp_connect($ftp_server);
$login_result=ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
if(!$login_result) echo 'No connected.<hr><br>';

$dir = 'blacks33';

if (ftp_mkdir($conn_id, 'public_html/del/'.$dir))
{
    echo "<br>Создана директория $dir\n";
}
else
{
    echo "<br>Не удалось создать директорию $dir\n";
}


ftp_close($conn_id);
?>


ПРИМЕР УДАЛЯЕТ ДИРЕКТОРИЮ:
читать дальше »
Код: Выделить весь код
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$ftp_user_name = '*';
$ftp_user_pass = '*';
$ftp_server = '*';

$conn_id=ftp_connect($ftp_server);
$login_result=ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
if(!$login_result) echo 'No connected.<hr><br>';

$dir = 'blacks33';

if (ftp_mkdir($conn_id, 'public_html/del/'.$dir))
{
    echo "<br>Создана директория $dir\n";
}
else
{
    echo "<br>Не удалось создать директорию $dir\n";
}

// получение списка файлов директори /
$buff = ftp_rawlist($conn_id, '/public_html/del/ez', true);

// вывод буфера
var_dump($buff);

if (ftp_rmdir($conn_id, 'public_html/del/'.$dir))
{
    echo "<br>Директория $dir удалена\n";
}
else
{
    echo "<br>Не удалось удалить директорию $dir\n";
}

ftp_close($conn_id);

?>



ВЫВОД
if(ftp_delete($conn_id, 'public_html/del/ez/'.$path))
if (ftp_rmdir($conn_id, 'public_html/del/ez/'.$path))
есть рабочий вариант


ДЕЛАЮ СПИСОК НА УДАЛЕНИЕ
/public_html/del2/ez/3/
public_html/del2/ez/3/
/public_html/del2/ez/3
public_html/del2/ez/3
/del2/ez/3/
public_html/del2/ez/3/
/del2/ez/3
public_html/del2/ez/3
/del2/ez/3/
del2/ez/3/
/del2/ez/3
del2/ez/3
/ez/3/
ez/3/
/ez/3
ez/3
/3/
3/
/3
3

БЕРУ ВАШ ПРИМЕР С 12 ПОСТА
Добавляю в него пассивный достпуп и заменю 2 строки на
if(ftp_delete($conn_id, 'public_html/del/ez/'.$path))
if (ftp_rmdir($conn_id, 'public_html/del/ez/'.$path))
Получаю:
Код: Выделить весь код
<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$ftp_user_name = '*';
$ftp_user_pass = '*';
$ftp_server = '*';

$conn_id=ftp_connect($ftp_server); 
$login_result=ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
ftp_pasv($conn_id, true);
if(!$login_result) echo 'No connected.<hr><br>'; 
$pathes=file('files_to_delete.txt'); 
echo 'Из файла прочитанны следующие файлы <br>'; 
print_r ($pathes); 
echo '-------------<br>Перед выполнением скрипта: <br>';  
// получение списка файлов директори /
$buff = ftp_rawlist($conn_id, '/');

// вывод буфера
var_dump($buff);

echo '-------------<br>Результат работы: <br>'; 



foreach ($pathes as $path) 
{ 
    $path=trim($path); 
    if(ftp_delete($conn_id, 'public_html/del/ez/'.$path))
    { 
        echo "<br>Файл $path удален\n"; 
    } 
    else 
    { 
        echo "<br>Не удалось удалить $path\n";
        
	if (ftp_rmdir($conn_id, 'public_html/del/ez/'.$path))
        {
            echo "<br>Директория $path удалена\n";
        } 
        else 
        {
            echo "<br>Не удалось удалить директорию $path\n";
        }
    } 
     
} 

// получение списка файлов директори /
$buff = ftp_rawlist($conn_id, '/');

// вывод буфера
var_dump($buff);

ftp_close($conn_id); 

?>

РЕЗУЛЬТАТ: ничего не работает

Тогда пробую подставить в начале слеш
if(ftp_delete($conn_id, '/public_html/del/ez/'.$path))
if (ftp_rmdir($conn_id, '/public_html/del/ez/'.$path))
- результат отрицательный

пробую
if(ftp_delete($conn_id, '/public_html/del/ez'.$path))
if (ftp_rmdir($conn_id, '/public_html/del/ez'.$path))
и
if(ftp_delete($conn_id, 'public_html/del/ez'.$path))
if (ftp_rmdir($conn_id, 'public_html/del/ez'.$path))
- отрицательно

Получается с путями вроде все перепробовал
Где потерял этот слеш?

Отправлено: 02:25, 31-08-2009 | #24


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


C выводом не ошибся?

Берём обычную, командную строку.
Далее команды:
ftp
open *.*.*.*
"login"
"password"
mkd tost
cd tost
mkd 3
cd 3
mkd ez
pwd
cd /
rmd /tost/3/ez

http://ru.wikipedia.org/wiki/Список_команд_FTP_сервера

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 20:04, 31-08-2009 | #25


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


А зачем мне команды фтп ?
Мнеб скриптик?

Отправлено: 22:09, 31-08-2009 | #26


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


PHP не делает ничего такого, что нельзя сделать своими руками.
Если напрямую нельзя сделать, то нельзя сделать и через PHP.
Если напрямую можно, то тогда стоит искать ошибки в скриптах.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:29, 01-09-2009 | #27


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Эх.
Понимаю.. вы и так тут столько со мной возитесь.
И большущие спасибо вам за это

Но нет у меня сейчас времени изучать пхп - все силы в изучении верстки и зарабатывание на хлеб.
А почему скрипта не работает не пойму - делал все как вы сказали, пробовал варианты, в саапорт писал - а в результате скрипт все равно не хочет удалять директории!?

Гдеж мои руки те ту закорюку ставят?!

Отправлено: 01:06, 01-09-2009 | #28


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Доступ давай к фтп ...

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 20:09, 02-09-2009 | #29



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Удаление файлов из списка указанного в txt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Объединение/разделение txt файлов AlexeyN Программное обеспечение Windows 6 27-11-2012 09:40
Система - Установка и удаление програм RVGroup Программное обеспечение Windows 57 31-12-2010 15:39
Скрипт для проверки списка пользователей и их удаление из AD alex_frog Microsoft Windows NT/2000/2003 0 22-07-2009 13:16
C/C++ - Создание списка файлов Albreht Программирование и базы данных 2 20-07-2009 01:17
Обратный порядок списка файлов Guest Microsoft Windows 95/98/Me (архив) 31 19-02-2004 00:07




 
Переход