0

我在设置允许我从 PHP 脚本管理 cron 作业的服务器时遇到了麻烦。这个想法是:用户可以根据需要创建任意数量的任务,并可以为每个任务设置警报。将警报保存到 MySQL 数据库后,我想在用户指定的时间为该条目创建一个 cronjob。

逻辑非常简单,但我对 unix 用户/文件权限感到沮丧。问题是,用户“www-data”没有运行 crontab 的权限,因此我不能使用它通过 php 脚本中的 shell_exec 调用来管理 cronjobs。我已经阅读了很多关于类似问题的教程/线程,但没有任何运气。我能得到的最接近的是我应该确保 www-data 用户有权运行 crontab(我很肯定它没有)。但是,我将“www-data”用户放入“crontab”组,我在“/etc/cron.d”目录中创建了“cron.allow”文件,但仍然没有。

顺便说一句,我正在使用 $output = shell_exec("crontab -u www-data -l") 来查看它是否正常工作(如果 $output == null 则出现错误)。

我应该怎么做才能使它工作?或者我应该使用一些不同的方法(也许我可以有一些 www-data 可写的文件并在 crontab 配置中设置它应该在那里检查 cronjobs,但我也不知道该怎么做)?

4

2 回答 2

0

我的应用程序运行的系统似乎非常奇怪地处理 cron.allow/cron.deny 文件(至少就我对这些文件的理解而言)。我删除/etc/cron.allow了文件,突然 www-data 用户可以在 php 脚本中使用 crontab 命令。我不知道为什么它不能在 cron.allow 文件中声明 www-data 用户,但现在看起来它可以工作了。

于 2012-11-16T10:51:25.030 回答
0

编辑:您可以将修改后的文件放入/etc/cron.d其中,该文件也可用于 cron comamnds。

免责声明:我没有这样做(尽管如果我能记得上次我是如何做到的,我会被诅咒的)

于 2012-11-14T12:48:24.297 回答