Как изменить дату папки на сервере?

Тема в разделе "PHP", создана пользователем e64f, 17 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    Через ftp программно заливаю файлы в папку на web сервер и после этой операции изменяется дата папки.

    Вопрос №1, как вернуть дату изменения папки? Интересует именно дата папки, время изменения файлов изменять умею .

    Могу делать все что угодно через ftp, и могу закачать любой php скрипт и запустить его.

    Вопрос №2, как получить дату папки? Проблема в том что известные мне методы показывают дату в виде Mart 17 18:34:25 - т.е. без года.
     
  2. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    по второму вопросу есть у команды ls один ключик:
    ls -l --time-style=long-iso
    или тоже но в php
    Код:
    <?php
    echo passthru("ls -l --time-style=long-iso");
    ?>
    
     
  3. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    В какой системе меняешь дату? Windows, Linux? Удаленно или на своем компьютере? Чем хочешь менять дату? Командами ftp или через php?
     
  4. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    Система линукс (разновидности)
    Удаленно
    Не важно ftp или php - важно чтобы делать это программно (язык php)
     
  5. wal

    wal Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    89
    Симпатии:
    30
    bool touch ( string $filename [, int $time [, int $atime ]] )


    Пытается установить время доступа и модификации файла с именем filename в значение time . Если аргумент time не указан, используется текущее время. Это эквивалентно тому, что делает функция utime (иногда её называют utimes). Если третий аргумент atime передан, время доступа указанного файла будет установлено в значение atime . Обратите внимание, что время доступа изменяется всегда, независимо от количества аргументов.

    Если файл не существует, он будет создан. Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

    применимо и для папок...
     
  6. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    С чего вы взяли, что применимо и для папок? я вот пробовал для папки, выдает ошибку.

    Warning: touch() [function.touch]: Utime failed: Operation not permitted in /home/site.ru/web/run.php on line 4

    <?php
    define("SELF", dirname(__FILE__)."/");
    echo SELF;
    touch(SELF."images/", time()-5*24*60*60);
    ?>
     
  7. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    может это от настроек сервера зависит?
    права на папку?
    у меня этот скрипт работает
    Код:
    <?php
    echo passthru("mkdir tmp/test");
    echo passthru("ls tmp -l --time-style=long-iso");
    touch("tmp/test", time()- 5*24*60*60);
    echo passthru("ls tmp -l --time-style=long-iso");
    echo passthru("touch tmp/test -d 2009-02-14");
    echo passthru("ls tmp -l --time-style=long-iso");
    ?>
    
    вот результат его работы
    Код:
    total 4
    drwxr-xr-x 2 www-data www-data 4096 2009-03-17 21:12 test
    total 4
    drwxr-xr-x 2 www-data www-data 4096 2009-03-12 21:12 test
    total 4
    drwxr-xr-x 2 www-data www-data 4096 2009-02-14 00:00 test
    
     
  8. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    Конечно зависит от настроек ))
    Права на папку пробовал ставить разные 0777 0755.
    Вижу что владелец файла у вас www-data.
    Сообщите от какого пользователя работает Apache?

    И еще вопрос, если хостер запрещает выполнять команды
    touch tmp/test -d 2009-02-14
    то наверное и в php функция touch работать не будет?
     
  9. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    права хоть 777 , ты должен быть владельцем папки
    воть:
    Код:
    total 4
    drwxrwxrwx 2 user1 user1 4096 2009-02-14 00:00 test
    <br />
    <b>Warning</b>:  touch() [<a href='function.touch'>function.touch</a>]: Utime failed: Operation not permitted in <b>/var/www/ls.php</b> on line <b>6</b><br />
    total 4
    drwxrwxrwx 2 user1 user1 4096 2009-02-14 00:00 test
    total 4
    drwxrwxrwx 2 user1 user1 4096 2009-02-14 00:00 test
    
    ниодна операция не прошла

    Да, это тот самый юзер от которого запущен апач.
    Т.к. папку создает сам скрипт, то и владелец - апач
     
    e64f нравится это.
  10. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    А я блин через ftp создавал папку!
    Похоже в этом была моя ошибка.

    Обидно, что на многих хостингах процесс апача и мой ftp аккаунт, это абсолютно разные пользователи.

    Вопрос закрыт.
     
Статус темы:
Закрыта.