Невозможно редактировать cron с помощью PHP - без ошибок - PullRequest
2 голосов
/ 03 августа 2011

Я пытаюсь заменить crontab, используя новый crontab, хранящийся в /tmp/crontab.txt.

  $output = '';
  $output .= "Existing Crontab contents:<br>";
  $output .= shell_exec('crontab -l');

  $output .= "<br>new contents:<br>";
  $output .= file_get_contents('/tmp/crontab.txt');

  $output .= "<br>Result of import:<br>";
  $output .= shell_exec('crontab /tmp/crontab.txt');
  $output .= shell_exec('crontab -l');
  echo $output;

Вывод:

Existing Crontab contents:
1 2 3 4 5 existing
new contents:
* * * * * echo 'test'
Result of import:
1 2 3 4 5 existing 

Вы видите, что импорт не работает и не показывает ошибку.

Apache работает как «никто». Я пробовал crontab -u nobody /tmp/crontab.txt как root, и это работает.

Это проблема с разрешениями? Если так, почему php (работающий как никто) не может обновить свой собственный cron? Как мне обойти это?

Спасибо

1 Ответ

2 голосов
/ 03 августа 2011

Попробуйте изменить строку импорта на эту:

$output .= shell_exec('crontab /tmp/crontab.txt 2>&1');

, который перенаправит stderr в stdout и позволит PHP отлавливать любые сообщения об ошибках, которые выкладывает cron.

...