使用php设置cron作业


Use php to set cron job

我正在尝试一种"通用"的方式来设置cron作业,因为我正在制作一个商业系统,它需要为每个人工作。

这就是我正在做的:

<?php
$data = '0 0,12 * * * -q /public_html/currency.php ';
file_put_contents('cron.txt', $data, FILE_APPEND);
exec('sudo crontab cron.txt', $output, $return);
if($return === 0)
{
  echo 'Cron Successful';
  } else {
  echo 'Cron Unsuccessful' . $output;
}
?>

我得到一个错误:Cron UnsuccessfulArray

为什么我会出现此错误?cron.txt包含所有用$data编写的内容。

$output变量作为PHP数组引用传递给exec函数(http://php.net/manual/en/function.exec.php)

要将此数组强制转换为字符串,您可能需要使用类似print_r的函数(http://www.php.net/manual/en/function.print-r.php)如下一个示例:

if ($return === 0) {
  $message = 'Cron Successful';
} else {
  $message = 'Cron Unsuccessful' . print_r($output, true);
}

正如评论中所建议的,出于安全考虑,不建议将web服务器用户留在sudoer中。

首先你的问题是:你没有得到你想要的结果,因为你实际执行这段PHP代码的用户没有(谢天谢地也是)sudo访问权限。要"修复"这个问题,请打开您的shell,而不是运行简单的:php example.php,而是运行这个:sudo php example.php。这应该会使它正常工作。

然而,我强烈建议你重新思考你试图解决的问题。我看到你正在尽可能地自动化(这是一件好事),也许可以使用shell脚本来设置你的环境。然后,您甚至可以将shell脚本存储在git/svn存储库中。