我有一台运行ubuntu 10.10的linux服务器,在安装了apache和php的maverick中,在/ var/www目录中有一个下载目录。我已经使用OSFile经理和修改,以包括一个函数来这里分割文件是代码:在Linux服务器上执行PHP exec split命令
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()作为输出值,我创建了一个包含几个用户的组,我已经使该组成为下载的所有者/并且让它读取写入并执行权限,这个组包括www-data。
任何帮助将apreciated
提示1:使用'addcslashes'或'escapeshellarg'。提示2:如果不捕获任何错误消息,请查看'error.log'。 – mario
error.log位于何处?我试过escapeshellarg,但它没有对文件路径做任何事情。 –
这是一个网络服务器文件。经常在文根上面。如果需要,Escapeshellarg可以在单引号和反斜线之间添加单引号。 – mario