PHP exec拆分命令在linux服务器上

时间:2011-10-22 10:59:40

标签: php linux split exec

我有一个运行ubuntu 10.10 maverick的linux服务器,安装了apache和php,在/ var / www目录下我有一个下载目录。我使用OSFile管理器并修改为包含一个分割文件的功能,这里是代码:

function spl($fname){
 global $folder;
 if (!$fname == ""){
    maintop("Split");
    $dirfile = $folder.$fname;

    \\escape directory path
    $dirfile = str_replace(" ","\ ",$dirfile);
    $dirfile = str_replace("(","\(",$dirfile);
    $dirfile = str_replace(")","\)",$dirfile);
    $command = "split -d -b1024m ".$dirfile." ".$fname."_";
    echo "Command: ".$command;
    echo"<br />";


    $returnval =0;
    unset($output2);
    $output = exec($command,$output2,$returnval);

    //echo results
    echo($output);
    echo"<br />";
    print_r($output2);
    echo"<br />";
    echo($returnval);
    echo"<br />";
    mainbottom();
 }
  else
    home();
}

该命令未执行。文件和目录是正确的,但它返回退出代码1,并且Array()作为输出值,我创建了一个包含少数用户的组,我已经使这个组成为downloads /的所有者并且给它读写和执行权限,该组包括www-data。

任何帮助都是合作的

2 个答案:

答案 0 :(得分:0)

尝试此文件拆分类

Split and merge files

或使用exec Split big files using PHP using exec

答案 1 :(得分:0)

如果你没有从exec收到任何错误消息并且error.log保持为空,那么使用这个包装器来执行:

 exec("sh -c \" $cmd 2>&1 \"");

2>&1stderr频道重定向到stdout,以便它显示在结果数组中。
In the shell, what does " 2>&1 " mean?

另一个选项是proc_open,您可以在其中单独阅读每个频道,但需要设置更多工作。