Проблема с файловым доступом апаческого юзера

Тема в разделе "Администрирование серверов", создана пользователем egoryichinfo, 28 окт 2011.

Модераторы: mefish, stooper
  1. egoryichinfo

    egoryichinfo Создатель

    Регистр.:
    19 мар 2010
    Сообщения:
    43
    Симпатии:
    6
    Всем привет.

    Стоит Ubuntu server 10.04.2 LST, Apache/2.2.14, nginx/0.7.65. Фронтом нжинкс (статика), беком апач (динамика).
    Установлен drupal 6.20, настроено расписание бекапа базы(модуль), прописан cron.hourly на выполнение друпаловского крона.
    Прописаны доступы на выполнение файла в cron.hourly (root 0755)
    друпаловский cron.php (root/user 0755)
    Прописан доступ к папке бекапа (www-data/root/user 0777)

    При срабатывании крона в логах пишет
    Код:
    Oct 21 11:21:12 user drupal: http://*******/drupal|1319181672|backup_migrate||http://*******/cron.php?cron.php||0||Could not run backup because the file could not be saved to the destination.
    Но если запустить друпаловский крон в ручную, он легко и не принужденно запускает скрипт и сохраняет бекап в туже самую папку. Т.е. при ручном запуске апаческий юзер имеет доступ и права на запись. А когда cron заставляет www-data выполнить скрипт, тот пишет что нет доступа.
    Крон срабатывает, проверяет наличие обновлений.

    В чем может быть проблема? заранее спасибо)
     
  2. mefish

    mefish Support

    Moderator
    • Супермодератор
    Регистр.:
    30 авг 2007
    Сообщения:
    915
    Симпатии:
    643
    Юзеру www-data скорее всего запрещено производить запись в ваш каталог, это и понятно, безопасность однако, права на папку, в которую он должен сохранять, какие установлены ?
     
  3. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    420
    Симпатии:
    285
    Ты в кроне как php вызываешь? php -f /путь_до_скрипта?
    Тебе тогда нужно сделать, чтобы друпаловский крон использовал полные пути (var/www/123/www/123/), т.к. иначе:
    Берем тестовый скрипт test.php с содержимым: file_put_contents('test.txt', 'test'); который находится в папке /var/www/test/www/site.com/test.com
    Если ты его запустишь через браузер, то он у тебя сохранит в /var/www/123/www/123/test.txt, если php -f /var/www/123/www/123/test.php, то он у тебя будет пытаться сохранить примерно в /var/www/test/test.txt.
     
  4. egoryichinfo

    egoryichinfo Создатель

    Регистр.:
    19 мар 2010
    Сообщения:
    43
    Симпатии:
    6
    в cron.hourly/drupal у меня прописано
    Права что нужны я указал в первом сообщении, с ними все впорядке
     
  5. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    420
    Симпатии:
    285
    Ну да, к "php cron.php" то что я писал выше тоже относится.
    Скидывай код cron.php
    З.Ы. Или юзай wget -q -O /dev/null http://вашсайт.рф/cronfile.php, но тогда если я правильно понимаю будет еще дергаться apache.