Войти

Показать полную графическую версию : Удаление файлов из списка указанного в txt


Страниц : 1 [2]

blacks2
29-08-2009, 12:06
С помощью молодцов из саппорта хостинга удалось запустить последний пример. Но не нужный.


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

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.txtez/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" }



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

blacks2
30-08-2009, 17:45
Сегодня попробовал добавить пассивный фтп к примерам из 1го и 5го поста
Результат тот же - папки не удаляются :(

Igor_I
30-08-2009, 23:12
blacks2, не надо сходить с ума. Надо писать директории правильно. Ни одна файловая система не даст создать файл или директорию со слэшем.

blacks2
31-08-2009, 02:25
Надо писать директории правильно. Ни одна файловая система не даст создать файл или директорию со слэшем. »
Попробовал продолжить попытки (в итоге они не увенчались успехом)


ПРИМЕР СОЗДАЕТ ДИРЕКТОРИЮ:<?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))

- отрицательно

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

Igor_I
31-08-2009, 20:04
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_сервера

blacks2
31-08-2009, 22:09
А зачем мне команды фтп ?
Мнеб скриптик?

Igor_I
01-09-2009, 00:29
PHP не делает ничего такого, что нельзя сделать своими руками.
Если напрямую нельзя сделать, то нельзя сделать и через PHP.
Если напрямую можно, то тогда стоит искать ошибки в скриптах.

blacks2
01-09-2009, 01:06
Эх.
Понимаю.. вы и так тут столько со мной возитесь.
И большущие спасибо вам за это

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

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

Igor_I
02-09-2009, 20:09
Доступ давай к фтп ...




© OSzone.net 2001-2012