Главная » Полезные статьи » Разное » Проблема: не удаляются файлы и папки по FTP
Распечатать статью

Проблема: не удаляются файлы и папки по 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; ?>

Разместите этот файл на площадке, в директории, доступной веб-серверу, например, как:

yoursite.ru/www/chmod.php

где yoursite.ru/www — корневая директория (DocumentRoot) вашего сайта на сервере.

Вызывать скрипт нужно так:

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

или так:

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

В первом случае указывается путь относительно DocumentRoot для вашего сайта (yoursite.ru/www/ в данном примере). Во втором случае (uXXXXX — идентификатор вашей площадки) — абсолютный путь от корневой директории сервера. Это для Мастерхоста так. У вас другой путь может быть, смотря какой хостер.

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

Вот сам файл скрипта: chmod.rar

Источник:  loco.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи