php 执行shell命令 打印错误信息
$cmd="rm1.txt";//删除一个不存在的文件,查看报错信息$res=doShell($cmd);var_dump($res);//该函数没有限制条件,可以直接放在代码中使用functiondoShell($cmd,$cwd=null){$descriptorspec=array(0=>array("pipe","r"),//stdin1=>array("pipe","w"),//stdout2=>array("pipe","w")//stderr);//$cmd='./test.sh';//替换为你要执行的shell脚本/**返回值*返回表示进程的资源类型,当使用完毕之后,请调用proc_close()函数来关闭此资源。如果失败,返回FALSE。*cmd要执行的命令*descriptorspec一个索引数组。*数组的键表示描述符,0表示标准输入(stdin),1表示标准输出(stdout),2表示标准错误(stderr)*数组元素值表示PHP如何将这些描述符传送至子进程。*pipe(第二个元素可以是:r向进程传送该管道的读取端,w向进程传送该管道的写入端),*以及file(第二个元素为文件名)。*pipes*将被置为索引数组,其中的元素是被执行程序创建的管道对应到PHP这一端的文件指针。*cwd*要执行命令的初始工作目录。必须是绝对路径,设置此参数为NULL表示使用默认值(当前PHP进程的工作目录)*env*要执行的命令所使用的环境变量。设置此参数为NULL表示使用和当前PHP进程相同的环境变量。***/$proc=proc_open($cmd,$descriptorspec,$pipes,$cwd,null);//$proc为false,表明命令执行失败if($proc==false){returnfalse;//dosthwithHTTPresponse}else{$stdout=stream_get_contents($pipes[1]);fclose($pipes[1]);$stderr=stream_get_contents($pipes[2]);fclose($pipes[2]);$status=proc_close($proc);//释放proc}$data=array('stdout'=>$stdout,'stderr'=>$stderr,'retval'=>$status);return$data;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。