【问题标题】:How to invoke cron job from php script?如何从 php 脚本调用 cron 作业?
【发布时间】:2012-05-17 17:26:27
【问题描述】:

我想从 php 脚本文件中设置 cron 作业。我可以使用 shell_exec() 函数执行 php 文件。但我无法运行与 cron 作业相关的命令。 $output = shell_exec("crontab -l"); 这个命令不起作用。我的 cronjob 位于 /usr/bin/crontab 下。我将文件权限设置为 777,并以 root 访问权限执行此命令。仍然没有运气。谁能帮帮我?

【问题讨论】:

  • 您将/usr/bin/crontab的权限设置为777?我建议你立即改回来!

标签: php cron invocation


【解决方案1】:

您的“crontal -l”命令仅在其个人 crontab 中显示为您的用户安排的内容。它可能会返回一个空字符串,具体取决于您当前的个人 crontab。 不要与文件 /etc/crontab 混淆,它是系统范围的 crontab,适用于所有用户,只能由 root 写入。

如果您的需要 - 正如我想我所理解的那样 - 从 php 脚本在 crontab 中添加作业,也许您可​​能只是想尝试类似的东西:

$r=shell_exec('cat "30 6 * * * user my_cmd my_args" >> /etc/crontab');

例如,要安排“my_cmd my_args”,以“用户”身份运行,例如每天早上 6:30。 这个 PHP 脚本应该以 root 身份启动,因为只有他可以在 /etc/crontab 中写入。

小心:我希望您的 php 脚本不是从网站启动,而是在访问受限环境的命令行中启动,以限制安全风险,特别是如果您采取措施使其以 root 身份启动。这种脚本在你的系统中是一个很大的漏洞。请考虑这一点。这是我的建议。

顺便说一下,/usr/bin/crontab 的权限回到:

-rwxr-sr-x 1 根 crontab 35040 19 déc。 2010 /usr/bin/crontab (来自 Debian 系统的示例)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多