Рекурсивная смена прав доступа на PHP

Понедельник, 27 апреля 2009 г.

Возникла тут задачка. Необходимо сменить права доступа на все файлы, папки и подпапки в определенной директории. Я наивный думал, что такое должно быть реализовано в каждом FTP-браузере, но в моём любимом Total Commander'е такой функции не обнаружилось. Пришлось писать скрипт.

Как обычно сначала немного погуглил - готового решения не нашел. В общем по кусочкам собрал вот такой вот простенький скриптик:

<?
 
/*                                                      */
/*  СКРИПТ ДЛЯ РЕКУРСИВНОЙ СМЕНЫ ПРАВ НА ФАЙЛЫ И ПАПКИ  */
/*                                                      */
/*   Автор: Предводителев Сергей (Niko)                 */
/*   http://predvoditelev.ru                            */
/*                                                      */
/*   27.04.2009                                         */
/*                                                      */
 
 
// Папка, в которой находятся файлы и папки для изменения прав
$PARENT_DIR = '/home/*****';
 
$FILE_MODE = 0644; // права на файлы
$DIR_MODE = 0755; // права на папки
 
function chmodex($file) {
global $PARENT_DIR;
global $FILE_MODE;
global $DIR_MODE;
    
    if ( file_exists($file) ) {
        if ( is_dir($file) ) {
            if ( !($file==$PARENT_DIR) ) { chmod( $file, $DIR_MODE ); }
            $handle = opendir( $file );
            while( $filename = readdir($handle) )
            if ( $filename != "." && $filename != ".." ) chmodex( $file."/".$filename );
                closedir($handle);
        } else {
            chmod( $file, $FILE_MODE );
        }
    }
}
 
chmodex($PARENT_DIR);
 
?>

Для использования скрипта необходимо:

  • Открыть файл chmodex.php (см. приложенный архив).
  • Указать $PARENT_DIR - это путь к папке, в которой необходимо изменить права доступа.
  • Указать $FILE_MODE и $DIR_MODE - это права доступа, которые необходимо установить для файлов и папок соответственно.
  • Залить скрипт chmodex.php в папку, в которой необходимо поменять права доступа, те в папку, которую указали в $PARENT_DIR. Права доступа самой папки $PARENT_DIR измененены не будут.
  • Через браузер запустить chmodex.php.
  • Если после запуска скрипта - белый экран, то значит всё прошло успешно :).

Скачать скрипт 940 (chmodex.zip, ~ 0.6 kb)

Рубрика: PHP, Web-мастеринг | Тэги: ,

Комментарии

  • kos
    03.12.2009, 13:34:04

    chmod -R

  • 03.12.2009, 13:52:13

    Kos, это вы о чем? :)

  • Влад
    30.01.2010, 10:26:06

    Kos это о том, что рекурсивная смена прав доступа делается стандартной командой. Незачем писать свой скрипт. "Все уже написано до нас".

  • 08.02.2010, 19:16:22

    Не всегда есть доступ для выполнения подобной команды.

  • 15.02.2010, 09:48:44

    а если на моем сайте нельзя размещать скрипты что тогда делать?

  • tsvyak07
    10.04.2010, 13:18:49

    Прекрастный скрипт, спасибо большое, меня многое интересует на этакие темы))

  • Mika
    13.05.2010, 23:27:35

    Мерси, очень помогло

  • 30.06.2010, 03:26:36

    Не везде сработает -))

    Комментатор 3 - хостинг менять!

  • 26.07.2010, 23:18:22

    Вообще скрипт отработает если у пользователя, из под которого он запускается есть право на изменение прав. А так первый комментатор конечно же прав, весь ваш скрипт это две команды:

    #find . -type f -exec chmod 644 {} \;

    #find . -type d -exec chmod 755 {} \;

  • Николай
    30.07.2010, 18:46:44

    Спасибо большое, очень помог скрипт!!!

Оставить комментарий
Не регистрировать/аноним
Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.
(обязательно)