Выставление CHMOD в PHP

Тема в разделе "PHP Pro", создана пользователем blacks, 19 авг 2009.

Статус темы:
Закрыта.
  1. blacks

    blacks

    Регистр.:
    26 сен 2008
    Сообщения:
    391
    Симпатии:
    24
    Привет всем!

    Ищется скрипт:
    Поиск и установка CHMOD по маске "имя файла" и/или расширения
    (с установкой в всех директориях сайта да/нет)

    Нашел два примера:
    1. установка только по файлам что указанны в списке
    = но когда попробовал добавить права 444 - он их не установил

    2. может выставлять только по расширению файлов
    - на мой взгляд очень приемлимый в-т но к сожалению не то.
    (возможно его как-то можно подредактировать.. но я в пхп 0)

    Всем откликнувшимся заранее большущие спасибо!

    PS примеры в аттачах
     

    Вложения:

  2. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Попробуй заменить функцию _CHMOD_DIR_FILES из второго скрипта на эту
    PHP:
    function _CHMOD_DIR_FILES($chmod,$ext,$enclosed)
    {
            foreach (
    glob("{*,.*}",GLOB_BRACE) as $file) {
                    if (
    $file=='.' || $file=='..') continue;
                    if (
    is_dir($file) && $enclosed === TRUE) {
                       if (!@
    chdir($file))continue;
                       
    chmod($file$chmod);
                       
    _CHMOD_DIR_FILES($chmod,$ext,$enclosed);
                       
    chdir("..");
                    } elseif (
    $ext == '*' || strtolower(pathinfo($file,PATHINFO_EXTENSION)) == $ext) {
                        
    chmod($file$chmod);
                    }
            }
    }

    тут ставятся права и на папки и на файлы (можно задать маску расширения * )

    если будет не то, что нужно, стучи в аську, помогу.
     
    blacks нравится это.
  3. blacks

    blacks

    Регистр.:
    26 сен 2008
    Сообщения:
    391
    Симпатии:
    24
    Спасибо.
    В асю обязательно или можно через форум?
    - у меня асю 5месяцев назад украли - все новую не сделать :ah:

    Попробовал копи-пастом твой код.
    Пробовал несколько вариантов
    - результат = в той или ином моменте появлятся белая страница
    - не работает :(

    В пхп нулл навверно совсем .. эх . не разобрался куда его втыкать :(
     
  4. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Замени во 2ом скрипте этот кусок:
    PHP:
    elseif (strtolower(pathinfo($file,PATHINFO_EXTENSION)) == $ext)
    на этот:
    PHP:
    elseif ($ext == '*' || strtolower(pathinfo($file,PATHINFO_EXTENSION)) == $ext)
    Найти можно поиском по файлу. Если вообще никак, то это 210 строка твоего файла ;)
    И теперь когда указываешь расширение, при желании чтобы изменялись права всех файлов, вместо расширения пиши *
     
  5. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Пропустил еще 1 добавление, если файл является папкой, то ему тоже поставить chmod
     
  6. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Уважаемый, если бы Вы сначала взглянули на скрипт, то у Вас бы ни возникла потребность в необоснованых высказываниях =)
    Приведу верхнюю часть оператора if:
    PHP:
    if (is_dir($file) && $enclosed === TRUE) {
                       if (!@
    chdir($file))continue;
                       
    _CHMOD_DIR_FILES($chmod,$ext,$enclosed);
                       
    chdir("..");
                    }
    за которой как раз и следует упоминаемый нами esleif =)
     
  7. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Ну и чо ты мне этот код привел? В нем НЕ выставляются права на ПАПКУ. Ищи дальше.
     
  8. blacks

    blacks

    Регистр.:
    26 сен 2008
    Сообщения:
    391
    Симпатии:
    24
    Заменил. Попробовал выставить index.html *.html и просто *
    - пишет что результат выполнен - захожу в фтп, обновляю - все тоже самое что и было :(

    Утро вечера мудренее - попробовал после сна и разобрался куда
    нужно поставить код.

    Но:confused: - ставлю файл index.html chmod 644 и мне не зайти
    - не пускает по фтп - на все папки поставил 644 а на файлы нет
    - что-то непонятное творится точно :( права на файлы в корне не
    меняются

    Ниже приаттачил оба варианта.
    Если кто может проверти плиз.
     

    Вложения:

  9. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    644 это -rw-r--r-- вполне возможно что не будет доступа к файлам.
    Может надо поставить 0755 права?

    Надо было в поле Расширение файлов вписать *
     
  10. blacks

    blacks

    Регистр.:
    26 сен 2008
    Сообщения:
    391
    Симпатии:
    24
    Что-то я запутался :thenks::bc:
    Вроде как нужно ставить любые права на файлы с "запросами" вида:
    (в одной / в многих директориях)

    a. index.html - строго файл
    б. *.html = html - все файлы с расширением
    в. index.* - все имена с любым расширением

    chmod.php 1.0
    - работает только html

    chmod.php 2.0 by Arqin
    - не работает index.* index.html

    chmod.php 3.0 by tostrss
    - не работает index.* index.html

    Папки тоже можно ставить...
    но не так чтоб они ставились вместе с установкой прав на файлы
    - сейчас вроде именно такое наблюдается как побочный эффект


    Эх.. прорвете плиз у себя - может что-то у меня съехало в примерах :(
     

    Вложения:

Статус темы:
Закрыта.