从 php 设置 cron 作业
set cron job from php
我尝试从 php
设置 cron
作业,但每次我尝试代码失败时它都不起作用。
告诉我这段代码有什么问题
$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 有些不起作用
运行 你的带有硬编码 $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);
成功时不会有输出,也不会return:
array(0) {
}
int(0)
问题是 apache 服务器将 运行 作为一个单独的有限资源帐户,理所当然地不应创建 cron 作业。这是让主机服务器受到威胁的一种非常简单的方法。特别是如果这是 运行ning 在可公开访问的 IP 地址 space.
中
但是,如果环境安全并且您的服务器管理员允许,您可以将 apache 进程 运行 作为更高权限的帐户(例如您的帐户)或使用 suexec 功能 运行 作为具有有限但适当权限的指定帐户。
在 Dr Google 中多次搜索后,我找到了答案
我必须将使用更改为 www-data
的 Apache 用户
所以命令更改为 crontab -u www-data cron.txt
我尝试从 php
设置 cron
作业,但每次我尝试代码失败时它都不起作用。
告诉我这段代码有什么问题
$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 有些不起作用
运行 你的带有硬编码 $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);
成功时不会有输出,也不会return:
array(0) {
}
int(0)
问题是 apache 服务器将 运行 作为一个单独的有限资源帐户,理所当然地不应创建 cron 作业。这是让主机服务器受到威胁的一种非常简单的方法。特别是如果这是 运行ning 在可公开访问的 IP 地址 space.
中但是,如果环境安全并且您的服务器管理员允许,您可以将 apache 进程 运行 作为更高权限的帐户(例如您的帐户)或使用 suexec 功能 运行 作为具有有限但适当权限的指定帐户。
在 Dr Google 中多次搜索后,我找到了答案
我必须将使用更改为 www-data
的 Apache 用户
所以命令更改为 crontab -u www-data cron.txt