Crontab与php exec

时间:2018-10-22 09:23:56

标签: php ubuntu cron

我正在努力进行这项工作:

exec("crontab -u root -l", $crons, $return);

但是$crons会返回一个空数组,即使在命令运行时也是如此;当我运行sudo crontab -u root -l时,它给出的结果如下:

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/1   * * * *   root     /usr/bin/php /var/www/console Test:Testing

最后一行是我认为很重要的...

为什么我得到一个空数组?

1 个答案:

答案 0 :(得分:1)

我认为这是因为php用户没有使用-u的特权, 并且您不能在exec中使用sudo,因为您必须输入root密码

您可以编辑visudo并添加

www-data ALL=NOPASSWD: /usr/bin/crontab

www-data是运行php的用户, 并将代码更改为

exec("sudocrontab -u root -l", $crons, $return);

但是在这种情况下,所有php脚本都可以访问root用户crontab

enter image description here