exec无法正常工作或执行crontab脚本

时间:2012-11-27 22:51:37

标签: php crontab

基本上我已经开发了一个小脚本,它将一个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"

它会执行它。

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

  • 使用完整命令路径调用该命令。有时在脚本环境中没有设置$ PATH,如果没有,则无法找到命令。

  • 使用http://php.net/manual/en/function.chdir.php

  • 设置脚本的工作目录
  • 使用绝对路径访问文件

答案 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; '这就是诀窍;)