Проблемы с использованием "в" с Apache
Я пытаюсь использовать скрипт PHP для создания at
рабочих мест, но когда приходит время их выполнять, кажется, ничего не происходит. Я пытался вывести любые ошибки в лог-файлы, но не повезло. Кажется очевидным, что это проблема с разрешениями, потому что, когда я устанавливаю apache для запуска в качестве личного пользователя, все работает нормально. Тем не менее, когда я исполняю wget напрямую из PHP, все работает нормально, поэтому кажется, что apache имеет правильные разрешения на его использование. Проблема, кажется, при использовании at
в сочетании с Apache. Поэтому мне нужно найти способ заставить эту работу работать с Apache от своего собственного пользователя.
Вот команда, которую я использую:
echo "wget -qO- http://example.com/" | at now + 1 minute 2>&1
Есть идеи?
РЕДАКТИРОВАТЬ: Apache может создавать на рабочих местах, просто кажется, что когда они выполняются, ничего не происходит.
2 ответа
Вы проверили, есть ли пользователь apache в файле at.allow? По справочной странице...
The /etc/at.allow and /etc/at.deny files determine which user can sub-
mit commands for later execution via at(1) or batch(1).
The format of the files is a list of usernames, one on each line.
Whitespace is not permitted.
The superuser may always use at.
If the file /etc/at.allow exists, only usernames mentioned in it are
allowed to use at.
If /etc/at.allow does not exist, /etc/at.deny is checked.
Проблема похожа на проблему cron: ваша работа выполняется в минимальной среде (например, PATH=/bin:/usr/bin и 2 или 3 вещи), и к ее стандартным входам и выходам ничего не привязано.
Сначала убедитесь, что ваша учетная запись Apache является рабочей оболочкой (а не /bin/false
), потому что 'at' будет использовать эту оболочку для запуска вашей спецификации заданий.
Затем попробуйте этот более конкретный фрагмент:
echo "/usr/bin/wget -qO- http://example.com/ >/tmp/example.com 2>/tmp/example.com.error" | at now + 1 minute