Я думаю, это потому, что пользователь php не имеет права использовать -u, и вы не можете использовать sudo в exec, потому что вы должны ввести пароль root
, вы можете отредактировать visudo и добавить
www-data ALL=NOPASSWD: /usr/bin/crontab
www-data - это пользователь, под которым работает php, и измените свой код на
exec("sudocrontab -u root -l", $crons, $return);
, но в этом случае все сценарии php будут иметьдоступ к root-пользователям crontab