【问题标题】:What does 2>&1 do in this php snippet?2>&1 在这个 php 片段中做了什么?
【发布时间】:2015-07-07 12:04:17
【问题描述】:

关于此代码

public function invoke($url)
{
    exec('wget 2>&1', $output);
    print_r($output);
}

2>&1 在这个命令中做了什么?我在 SO 上找到了这个,但没有解释 2>&1

wget 是一个 linux 命令,我使用 exec() 从 PHP 运行它。

上面的代码有效。我只需要在正确的位置插入$url并理解2>&1

相关链接

GNU Documentation on Wget

【问题讨论】:

标签: php linux exec


【解决方案1】:

您有多个输出流。
最常见的两种是 STDOUT(标准输出)和 STDERR(错误输出)。

通常您只能看到 STDOUT 输出。对于exec,这也是它捕获的唯一流。

现在:命令2>&1 意味着您将进入STDERR 的输出传递给与正常输出相同的输出。在这种情况下到 PHP 的 exec 函数(但主要是到你的 shell)。

这主要用于当您想要守护您的应用程序并将所有输出发送到 /dev/null 时,但它也可以用于这种情况(您可以使用 PHP 查看所有内容)。

【讨论】:

  • 你是说1指STDOUT,2指STDERR
  • 2 确实是指STDERR。 &1 指的是STDOUT 的输出重定向(带有& 符号)。 1 指的是STDOUT,但是我们这里不用1,而是&1(是的,有区别)。
  • 对不起,我假设性地问 1 如果它只是 1 会指代什么。1 本身会指代 STDOUT 吗?
  • 据我所知:是的:-)
  • 在这种情况下,& 并没有像在这篇文章中那样提到“分叉” - superuser.com/questions/152688/… - 你说的是完全不同的东西吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多