基本上我已经开发了一个小脚本,它将一个cron作业添加到一个名为“crontask”的文件中,然后我想执行它,然后它就变成了一个cron作业。这是脚本:
<?php
$filename = "../../tmp/crontask.txt";
$output = shell_exec('crontab -l');
$something = file_put_contents($filename, $output.'* * * * * NEW_CRON'.PHP_EOL);
$cngDir = chdir('../../tmp/');
echo exec('crontab ' . getcwd() . '/crontask.txt');
//var_dump($exe);
&GT;
一切都很好,路径是一样的,如果我复制并粘贴打印出来的路径,IT将执行cronjob,但在PHP中它不会????
除了exec函数之外,一切都有效,它不会执行它。有什么想法吗?
在终端,如果我这样做:
string(25) "crontab /tmp/crontask.txt"
它会执行它。
答案 0 :(得分:1)
尝试以下方法:
使用完整命令路径调用该命令。有时在脚本环境中没有设置$ PATH,如果没有,则无法找到命令。
使用绝对路径访问文件
答案 1 :(得分:0)
我和cron的工作有类似的问题 我看了你的代码并得到了一些想法。 我使用绝对路径
这是我的代码:
$myFile = "/home/user/tmp/crontab.txt";
$addcron = "
0 0 * * * cronjob1 " . PHP_EOL .
"0 18 * * 1-5 conjob2 " . PHP_EOL .
"0 9 * * * cronjob3 " . PHP_EOL ;
$output = exec('crontab -l > ' . $myFile );
file_put_contents($myFile,$addcron ,FILE_APPEND);
echo exec('crontab ' . $myFile );
echo "<h3>Cron job successfully added!</h3>";enter code here
基本上我将以前的cronjobs列表写入文件,然后使用新的cronjobs附加文件。然后使用crontab命令添加新的cronjobs列表。 linux写入文件命令'&gt; '这就是诀窍;)