Я пытаюсь сделать будильник с веб-интерфейсом (на моей малине Pi). Я хочу сделать это с помощью PHP и crontab.
Это мой PHP-код:
shell_exec("./wake.sh $minutes $hours $days");
Это сценарий wake.sh:
echo "number 1: $1; number 2: $2; number 3: $3" | wall; (crontab -u $USER -l; echo "$0 $1 * * $2 /var/www/alarm.sh") | crontab -u $USER -
Если я запустил скрипт из bash (из пользователя www-data), я получаю широковещательное сообщение и запись в файле crontab, но если я запустил его из скрипта PHP, передается широковещательное сообщение, но нет записи в файле crontab.
Я, наконец, узнал ответ: переменная $USER
пуста, если я ее выполнил с PHP. Теперь я использую:
(crontab -l; echo "$0 $1 * * $2 /var/www/alarm.sh") | crontab -
и это работает!