我尝试从cron
设置php
作业,但每次尝试代码时,它都无效。
告诉我这段代码有什么问题
$cron = $this->generator();
file_put_contents("cron.txt", $cron);
shell_exec('crontab cron.txt');
生成器函数使cron作业字符串如下
12 1 * * * /usr/bin/sample >/dev/null 2>&1
cron.txt文件没问题。它包含字符串,但shell_exec有些无法正常工作
答案 0 :(得分:1)
使用硬编码的 $ corn 在本地运行您的脚本对我来说很好,我已经包含了几行来清除crontab的开头和几行以确认输入。见吼叫。
$cron = '12 1 * * * /usr/bin/sample >/dev/null 2>&1';
file_put_contents('cron.txt', $cron);
shell_exec('crontab -r');
shell_exec('crontab cron.txt');
// To check the result
$output = [];
exec('crontab -l',$output);
print_r($output);
输出:
Array
(
[0] => 12 1 * * * /usr/bin/sample >/dev/null 2>&1
)
这是一种检查crontab cron.txt
执行结果的方法:
$output = $return = [];
exec('crontab cron.txt',$output, $return);
var_dump($output, $return);
如果成功,将不会有输出或返回:
array(0) {
}
int(0)
答案 1 :(得分:1)
www-data
所以命令改为crontab -u www-data cron.txt
答案 2 :(得分:0)
问题是apache服务器将作为一个单独的有限资源帐户运行,该帐户不应该创建cron作业。这是让主机服务器受到损害的一种非常简单的方法。特别是如果它在公共可访问的IP地址空间中运行。
但是,如果环境是安全的并且您的服务器管理员允许,您可以让apache进程作为更高权限的帐户(例如您的帐户)运行,或者使用suexec功能作为指定帐户运行,但有限但适当权限。