我有一个运行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。
任何帮助都是合作的
答案 0 :(得分:0)
答案 1 :(得分:0)
如果你没有从exec收到任何错误消息并且error.log保持为空,那么使用这个包装器来执行:
exec("sh -c \" $cmd 2>&1 \"");
2>&1
将stderr
频道重定向到stdout
,以便它显示在结果数组中。
In the shell, what does " 2>&1 " mean?
另一个选项是proc_open
,您可以在其中单独阅读每个频道,但需要设置更多工作。