[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ftp_chmod() проблемы
make.kz
есть код

<?
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 написал(а):
как тут можно в скобках то разобратся? mad.gif

Спустя 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 написал(а):
Ааа, не вопрос smile.gif... вот пожалуйста пишет следующее. "название папки/" а файлы конечно не находит. Да ты был прав. Он не видит файлы. значит надо делать листинг?

Спустя 20 минут, 5 секунд (31.08.2010 - 08:48) linker написал(а):
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);
}
Во-первых, при каждом вызове RemoveDir() происходит коннект к FTP. Во-вторых, при коннекте к FTP ты попадаешь в свою домашнюю папку, следовательно все $folder_name должны быть относительными этой папки.

Спустя 12 минут, 53 секунды (31.08.2010 - 09:01) make.kz написал(а):
Теперь он выходит на ошибку
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 не существует или это файл!

Спустя 55 секунд (31.08.2010 - 09:19) make.kz написал(а):
я еще добавил следующее
после подключения к ФТП

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 видит

Спустя 47 минут, 42 секунды (1.09.2010 - 11:45) linker написал(а):
unlink() видит его, потому что он есть локально, а ftp_chmod() работает с FTP на удаленном сервере и там такого файла может и не быть.

Спустя 1 день, 6 часов, 17 минут, 42 секунды (2.09.2010 - 18:03) make.kz написал(а):
И тема потихоньку умирает smile.gif

Спустя 12 часов, 24 минуты, 56 секунд (3.09.2010 - 06:28) make.kz написал(а):
Я проверял, заходил по ФТП на сервер. 16.jpg там лежит smile.gif. Мистика какая-то.

Спустя 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 написал(а):
Ладно с путями разберемся. Спасибо огромное. Можно тему закрывать smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.