Я пытаюсь использовать сценарий PHP для создания at
заданий, но когда приходит время выполнять задания, кажется, что ничего не происходит. Я пытался вывести любые ошибки в файлы журналов, но безуспешно. Кажется очевидным, что это проблема с разрешениями, потому что, когда я устанавливаю apache для запуска от имени моего личного пользователя, все работает нормально. Однако, когда я запускаю wget непосредственно из PHP, все работает нормально, поэтому кажется, что apache имеет правильные разрешения на его использование. Проблема возникает при использовании at
в связке с apache. Поэтому мне нужно найти способ заставить эту работу работать с apache, работающим как собственный пользователь.
Вот команда, которую я использую:
echo "wget -qO- http://example.com/" | at now + 1 minute 2>&1
Любые идеи?
РЕДАКТИРОВАТЬ: Apache может создавать задания at, просто кажется, что при их выполнении ничего не происходит.
Проблема аналогична проблеме 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
Вы проверяли, находится ли пользователь 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.