我正在尝试一种"通用"的方式来设置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存储库中。