<?
if(file_exists($folder_name) && is_dir($folder_name)) {
$dirHandle = opendir($folder_name);
while (false !== ($file = readdir($dirHandle))) {
if ($file!='.' && $file!='..') {
$tmpPath=$folder_name.'/'.$file;
ftp_chmod($conn_id,0777, $tmpPath);
if (is_dir($tmpPath)) {
RemoveDir($tmpPath);
}
else
{
if(file_exists($tmpPath)){
unlink($tmpPath);
}
}
}
} closedir($dirHandle);
if(file_exists($folder_name)) {
rmdir($folder_name); }
}
else
{ echo "Удаляемой папки $folder_name не существует или это файл!"; }}
?>
Когда скрипт пытается изменить права доступа по ФТП на все файлы указанной папки, выходит ошибка
ftp_chmod() [function.ftp-chmod]: 16.jpg: No such file or directory in drop_album.php on line 98
проверял вручную, файл существует.
затем сервер выдают очередную ошибку
Warning: unlink(16.jpg) [function.unlink]: Permission denied in drop_album.php on line 106
помогите пожалуста. в чем дело?
Спустя 5 часов, 27 минут, 20 секунд (30.08.2010 - 21:29) linker написал(а):
Значение $tmpPath можно показать, а то не понятно ничего. По поводу второй ошибки, у вас просто нет прав для операции удаления.
Спустя 21 минута, 57 секунд (30.08.2010 - 21:51) SlavaFr написал(а):
как тут можно в скобках то разобратся?
Спустя 8 часов, 34 минуты, 13 секунд (31.08.2010 - 06:25) make.kz написал(а):
в переменной tmpPath находится $folder_name - $myrow['folder_name'] (название папки в базе). И существующие в ней файлы.
Спустя 5 минут, 45 секунд (31.08.2010 - 06:31) make.kz написал(а):
<?
if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['folder_name'])) {$folder_name=$_POST['folder_name'];}
if ($folder_name=='') { unset($folder_name); }
function RemoveDir($folder_name)
{
$ftp_server = "ftp_server_name";
$ftp_user_name = "user";
$ftp_user_pass = "password";
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if(file_exists($folder_name) && is_dir($folder_name))
{
$dirHandle = opendir($folder_name);
while (false !== ($file = readdir($dirHandle)))
{
if ($file!='.' && $file!='..')
{
$tmpPath=$folder_name.'/'.$file;
ftp_chmod($conn_id,0777, $tmpPath);
if (is_dir($tmpPath)) { RemoveDir($tmpPath); }
else
{
if(file_exists($tmpPath)) { unlink($tmpPath); }
}
}
}
closedir($dirHandle);
if(file_exists($folder_name)) { rmdir($folder_name); }
}
else
echo "Удаляемой папки $folder_name не существует или это файл!";
}
?>
Вот весь код подключения и удаления папки
ОТФОРМАТИРОВАНО И ПРИВЕДЕНО В БОЖЕСКИЙ ВИД BY LINKER
Спустя 1 час, 42 минуты, 25 секунд (31.08.2010 - 08:13) linker написал(а):
Могу сказать только одно, что $folder_name . '/' . $file; не существует на ftp. А для ясности, я хотел в прошлом посте увидеть значение, которое появляется после что-то типа
echo $folder_name.'/'.$file;
Спустя 14 минут, 41 секунда (31.08.2010 - 08:28) make.kz написал(а):
Ааа, не вопрос ... вот пожалуйста пишет следующее. "название папки/" а файлы конечно не находит. Да ты был прав. Он не видит файлы. значит надо делать листинг?
Спустя 20 минут, 5 секунд (31.08.2010 - 08:48) linker написал(а):
while (($file = readdir($dirHandle)) !== false)Во-первых, при каждом вызове RemoveDir() происходит коннект к FTP. Во-вторых, при коннекте к FTP ты попадаешь в свою домашнюю папку, следовательно все $folder_name должны быть относительными этой папки.
{
if ($file == '.' || $file == '..') continue;
$tmpPath=$folder_name.'/'.$file;
ftp_chmod($conn_id, 0777, $tmpPath);
if (is_dir($tmpPath))
RemoveDir($tmpPath);
else
unlink($tmpPath);
}
Спустя 12 минут, 53 секунды (31.08.2010 - 09:01) make.kz написал(а):
Теперь он выходит на ошибку
echo "Удаляемой папки $folder_name не существует или это файл!";
Вообще как правильно все сделать? Именно с управлением доступа к папке?
echo "Удаляемой папки $folder_name не существует или это файл!";
Вообще как правильно все сделать? Именно с управлением доступа к папке?
Спустя 1 минута, 38 секунд (31.08.2010 - 09:02) make.kz написал(а):
переменная $tmpPath - пустая.
Спустя 9 минут, 22 секунды (31.08.2010 - 09:12) linker написал(а):
Смотри какие где ошибки, например
$dirHandle = opendir($folder_name) or die('не могу открыть папку');На первый взгляд вроде все прилично, кроме того, что указал постом выше.
Спустя 6 минут, 37 секунд (31.08.2010 - 09:18) make.kz написал(а):
Warning: closedir(): supplied argument is not a valid Directory resource in drop_album.php on line 106
Удаляемой папки new не существует или это файл!
Удаляемой папки new не существует или это файл!
Спустя 55 секунд (31.08.2010 - 09:19) make.kz написал(а):
я еще добавил следующее
после подключения к ФТП
ftp_chdir($conn_id, "albums");
после подключения к ФТП
ftp_chdir($conn_id, "albums");
Спустя 50 минут, 40 секунд (31.08.2010 - 10:10) linker написал(а):
Для примера
<?
function RemoveDir($folder_name)
{
global $conn_id;
if (file_exists($folder_name) && is_dir($folder_name))
{
if (!($dirHandle = opendir($folder_name))) return;
while (($file = readdir($dirHandle)) !== false)
{
if ($file == '.' || $file == '..') continue;
$tmpPath = $folder_name . '/' . $file;
ftp_chmod($conn_id, 0777, $tmpPath);
if (is_dir($tmpPath))
RemoveDir($tmpPath);
else
unlink($tmpPath);
}
closedir($dirHandle);
rmdir($folder_name);
}
else
echo "Удаляемой папки $folder_name не существует или это файл!";
}
$folder_name = './albums'; // Путь относительно текущей папки, в которой выполняется скрипт
$ftp_server = "ftp_server_name";
$ftp_user_name = "user";
$ftp_user_pass = "password";
$conn_id = ftp_connect($ftp_server) or die('Ошибка ФТП');
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die('Ошибка авторизации');
RemoveDir($folder_name);
?>
Спустя 47 минут, 39 секунд (1.09.2010 - 10:58) make.kz написал(а):
Warning: ftp_chmod() [function.ftp-chmod]: albums/16.jpg: No such file or directory in drop_album.php on line 89
Warning: unlink(albums/16.jpg) [function.unlink]: Permission denied in /drop_album.php on line 93
Странно, ftp_chmod не видит этот файл или папку, а unlink видит
Warning: unlink(albums/16.jpg) [function.unlink]: Permission denied in /drop_album.php on line 93
Странно, ftp_chmod не видит этот файл или папку, а unlink видит
Спустя 47 минут, 42 секунды (1.09.2010 - 11:45) linker написал(а):
unlink() видит его, потому что он есть локально, а ftp_chmod() работает с FTP на удаленном сервере и там такого файла может и не быть.
Спустя 1 день, 6 часов, 17 минут, 42 секунды (2.09.2010 - 18:03) make.kz написал(а):
И тема потихоньку умирает
Спустя 12 часов, 24 минуты, 56 секунд (3.09.2010 - 06:28) make.kz написал(а):
Я проверял, заходил по ФТП на сервер. 16.jpg там лежит . Мистика какая-то.
Спустя 1 час, 30 минут, 1 секунда (3.09.2010 - 07:58) make.kz написал(а):
Нет Локально не дает изменить права
Спустя 12 минут, 11 секунд (3.09.2010 - 08:10) linker написал(а):
Значит владелец у файлов другой, потому и не дает сменить права. А про фтп, вся грабля в путях.
Спустя 5 часов, 56 минут, 19 секунд (3.09.2010 - 14:06) make.kz написал(а):
Ладно с путями разберемся. Спасибо огромное. Можно тему закрывать