Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php exec()错误响应_Php_Exec - Fatal编程技术网

Php exec()错误响应

Php exec()错误响应,php,exec,Php,Exec,以该命令为例: $command = "echo '/just/for/the/test /heh/' | awk '//just// {print $1}'"; 在shell中直接复制时,会出现以下错误: awk: cmd. line:1: //just// {print $1} awk: cmd. line:1: ^ unterminated regexp 但是,当我exec() exec($command, $output, $status); var_dump( $

以该命令为例:

$command = "echo '/just/for/the/test /heh/' | awk '//just// {print $1}'";
在shell中直接复制时,会出现以下错误:

awk: cmd. line:1: //just// {print $1}
awk: cmd. line:1:         ^ unterminated regexp
但是,当我
exec()

exec($command, $output, $status);

var_dump( $command, $output, $status );

// string(69) "echo '/just/for/the/test /heh/' | awk '//just// {print $1}'"
// array(0) { }
// int(1)
如何检索exec的STDERR部分?

使用
exec()
我能想到的唯一方法是在正在执行的命令中将STDERR重定向到STDOUT,如:

$command = "echo '/just/for/the/test /heh/' | awk '//just// {print $1}' 2>&1";
exec()
的替代方法是使用
proc\u open()
函数系列。使用
proc_open()
执行命令并打开指向STDIN、STDOUT和STDERR的文件指针,您可以从中读取/写入数据


有关更多信息,请参见。您应该像这样将stderr重定向到stdout

$stout = exec($command . " 2>&1", $output, $status);
请参见此处

谢谢你的链接,这个问题的答案非常棒。糟糕的是,当我问相关问题时,它并没有出现。另外,你的答案比@Vlad的+你的代表性少了一点,所以-被接受了。好吧,谢谢:)我实际上认为他的答案更快,也更广泛。但我不一定会抱怨。