我正在努力设置一种“通用”的方式来设置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
写的所有内容。
答案 0 :(得分: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中。
答案 1 :(得分:0)
首先你的问题是:你没有得到你想要的结果,因为你实际执行这个PHP代码的用户没有(并且谢天谢地)也有sudo访问权限。要“修复”这个问题,打开你的shell而不是运行一个简单的:php example.php,运行这个:sudo php example.php。这应该有效。
但是我强烈建议您重新考虑您要解决的问题。我看到你尽可能地自动化(一件好事),也许使用shell脚本来设置你的环境。然后,您甚至可以将该shell脚本存储在git / svn存储库中。