0

我正在尝试制作一种设置 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.

4

2 回答 2

0

首先是你的问题:你没有得到你想要的结果,因为你实际执行这个 PHP 代码的用户没有(幸运的是也没有)有 sudo 访问权限。要“修复”这个问题,请打开你的 shell,而不是运行一个简单的:php example.php,而是运行这个:sudo php example.php。那应该使它起作用。

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

于 2013-08-28T21:38:22.080 回答
0

$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 服务器用户留在 sudoers 中。

于 2013-08-28T21:26:42.707 回答