linux服务器上的PHP exec split命令

linux服务器上的PHP exec split命令,php,linux,split,exec,Php,Linux,Split,Exec,我有一个运行Ubuntu10.10Maverick的linux服务器,安装了apache和php,在/var/www目录下有一个下载目录。我使用了OSFile manager,并对其进行了修改,添加了一个拆分文件的函数,代码如下: function spl($fname){ global $folder; if (!$fname == ""){ maintop("Split"); $dirfile = $folder.$fname; \\escape directo

我有一个运行Ubuntu10.10Maverick的linux服务器,安装了apache和php,在/var/www目录下有一个下载目录。我使用了OSFile manager,并对其进行了修改,添加了一个拆分文件的函数,代码如下:

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和数组作为输出值,我创建了一个包含一些用户的组,我使该组成为下载/的所有者,并授予其读写和执行权限,该组包含www数据


任何帮助都将受到感谢

请尝试此文件拆分类

或者使用exec

如果没有从exec收到任何错误消息,并且error.log保持为空,则使用此包装进行执行:

 exec("sh -c \" $cmd 2>&1 \"");
2>&1将stderr通道重定向到stdout,以便它显示在结果数组中。


另一个选择是,您可以单独读取每个频道,但设置起来需要更多的工作。

提示1:使用AddCslash或escapeshellarg。提示2:如果未捕获任何错误消息,请查看error.log。error.log位于何处?我试过escapeshellarg,但它对文件路径没有任何作用。它是一个Web服务器文件。通常在根的上方。Escapeshellarg会根据需要在其周围添加单引号,并在其中添加反斜杠。我了解到,它应该转义一个字符串,该字符串将作为shell命令传递,但它没有转义空格,或者,我已经检查了/var/log/apache2/error.log,但它是空的。如果它包含在单引号中,则不需要进一步转义,它确实会这样做。如果您没有得到任何日志条目,或者找不到它们,那么将exec语句包装在execsh-c\$cmd 2>&1\中;您好,我正在查看您链接的课程,我会让您知道它是否有效。我已经回答了这个问题,我正在正确地执行这个命令。我已经在一个shell中对它进行了测试,但是它不能通过php工作