Удаление файлов Joomla через ftp

Как решить проблемы с доступом к файлам площадки, созданным PHP-скриптами? - Ошибка 550. Невозможно удалить файлы через FTP - Я пытаюсь удалить Joomla с хостинга, но некоторые папки не удаляются, хотя я и пытаюсь выставить на них атрибут доступа 777

Порой сталкиваемся с проблемой: хотим удалить ненужную папку или файл с сервера по FTP, а не можем! Как так? Вспоминаем о правах доступа... выставляем в ftp-клиенте 777 там где надо, но это не решает проблемы!

Такое происходит например в Joomla, когда устанавливаем свой компонент и других системах. Оказывается что такое бывает, если файлы были созданы PHP-скриптом и их владелец не вы. То есть от своего имени такие файлы удалить по FTP невозможно.

Касательно Joomla - изначально её файлы были созданы под фтп-пользователем и принадлежат ему. Но веб-сервер на большинстве хостингов работает под совершенно другой учетной записью. И при установке новых компонентов Joomla действует именно от имени последнего и создает файлы, которые по факту принадлежат непосредственно ему. Установка компонента чаще всего заключается в создании директорий /components/com_xxx и /administrator/components/com_xxx и файлов в них. И при попытке удалить их фтп-клиентом ничего не получается только потому, что один пользователь естественно не может изначально иметь права удалять файлы другого.

Но есть выход - создать или использовать скрипт, который работая от имени пользователя веб-сервера будет удалять ненужные папки или менять их права на 777, что позволит их удалить уже фтп-клиентом. Такие скрипты называются web-shell.



Вот что предлагает хостинг Masterhost:

Создать файл (например "chmod.php") с содержимым:


<?php

function chmod_R($path, $perm) {

  $handle = opendir($path);
  while ( false !== ($file = readdir($handle)) ) {
    if ( ($file !== "..") ) {
      @chmod($path . "/" . $file, $perm);
      if ( !is_file($path."/".$file) && ($file !== ".") )
        chmod_R($path . "/" . $file, $perm);
    }
  }
  closedir($handle);

}

$path = $_SERVER["QUERY_STRING"];

if ( $path{0} != "/" )
  $path = $_SERVER["DOCUMENT_ROOT"] . "/" . $path;

chmod_R($path, 0777);
echo $path;

?>


Разместите этот файл в корне каталога.

Вызывать скрипт нужно так:
http://yoursite.ru/chmod.php?путь_к_нужной_директории


или так:
http://yoursite.ru/chmod.php?/home/uXXXXX/yoursite.ru/www/путь_к_нужной_директории


При запуске скрипта без параметров будут изменены права для всех файлов и директорий, располагающихся в DocumentRoot и можно спокойно удалить или закачать необходимое по FTP.


Добавить комментарий

0 Комментариев

Добавление комментария

Я бы хотел услышать Ваши мысли. Не стесняйтесь оставить свой комментарий и присоединиться к беседе!

2+2*2
Введите код: * Кликните на изображение чтобы обновить код, если он неразборчив