За последние 24 часа нас посетили 53667 программистов и 1677 роботов. Сейчас ищут 813 программистов ...

Помогите разобраться с правами доступа

Тема в разделе "PHP для новичков", создана пользователем Catrina, 4 мар 2016.

  1. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    С чего бы начать. В общем, события происходят на хостинге. У меня есть скриптик, который должен записывать в что-нибудь в файл. Я настроила крон, который обращается к скрипту раз в полчаса. Скрипт точно срабатывает, у меня в нём функция mail, которая присылает на почту сообщение, что скрипт сработал. Но данные в файлик не записываются. Но если я сама наберу этот же скрипт в браузере, он тоже срабатывает, и тогда данные в файлик записываются. Что мне делать?

    Может, нужно права на файлик txt изменить? Но я итак настроила их на чтение и на запись. Что тогда не так?

    Да, и ещё вопрос: мне нужно права для владельца или для группы настраивать? Я кто, владелец или группа?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Крон и вебсервер могут работать под разными пользователями. Выясни достоверно где какой используется и в какой он группе.

    Добавлено спустя 9 минут 25 секунд:
    Другое отличие связано с не с правами, а с тем что является "текущей папкой", относительно которой ты что-то указываешь при открытии файлов, инклудишь и т.д. При веб-доступе текущая папка это папка скрипта с точкой входа. При консольном вызове текущая папка это место откуда работает вызывающий процесс. Cкорее всего это домашняя папка пользователя. Используй константу __DIR__ чтобы точно указать от какой папки ты "танцуешь".

    viewtopic.php?t=54114
    http://phpfaq.ru/newbie/paths

    p.s. для отладки обрати внимание на функции getcwd() - получить текущую директорию и chdir() - установить текущую директорию. а также убедись, что getcwd() не обязательно совпадает с константой __DIR__.
     
  3. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Дело даже не в правах. С правами 777 тоже не записывается. Какие ещё могут быть проблемы?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Ты всё прочитала, что я написал?

    Добавлено спустя 1 минуту 48 секунд:
    Когда что-то идёт не так, бери в зубы отладку и копай: phpfaq.ru/debug
    Читай логи. Пиши логи. Проверяй всё, что сможешь придумать. Мать Тереза уже умерла, надеяться не на кого.
     
  5. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Всё, получилось
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    "… но никому не скажу как. они недостойны."
     
  7. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Потому что обижают маленьких.

    А решение — абсолютный путь к файлику txt

    Добавлено спустя 51 минуту 48 секунд:
    Но путь пришлось прописать от руки, потому что при использовании крона $_SERVER['DOCUMENT_ROOT'] оказывается пустым...
    Кто-нибудь знает, почему?
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Кто-нибудь отвечает: потому что в консоли (CLI) нет никакого DocumentRoot. Там вообще многих переменных нет. Например REQUEST_URI тоже не имеет смысла.
     
  9. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Спасибо :)
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Ты не используешь помощь. Я сразу написал:
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    А зачем от руки? Есть же замечательная константа __DIR__, artoodetoo про неё писал. Вот относительно неё и надо прописывать:
    Код (PHP):
    1. $fp = fopen(__DIR__ . "/path/to/my/file", "w+");
    2.  
     
  12. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Спасибочки! :)

    Добавлено спустя 1 минуту 58 секунд:
    Я всё прочитала! Спасибо за помощь!

    Добавлено спустя 6 минут 59 секунд:
    Всё работает с __DIR__
     
  13. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    О. С возвращением.