PHP:如何检索管道内容

时间:2019-02-21 12:46:59

标签: php

不是一个骗子,在这种情况下,我试图通过命令行运行php,但它无法按预期运行(php使用php:// input,但我不想修改它们)

我正在尝试以下操作:

echo 'hello' | php -r 'print("input content:".file_get_contents("php://input"));'

我期望类似

content:hello

要打印出来,但只能得到

  

内容:

3 个答案:

答案 0 :(得分:5)

请改用stdin

echo "hello" | php -r 'print_r("input content:".file_get_contents("php://stdin"));'

有关CLI流的更多信息:http://php.net/manual/en/features.commandline.io-streams.php

答案 1 :(得分:0)

您可以使用参数。

#!/usr/bin/php
<?php
// loop through each element in the $argv array
foreach($argv as $value){
  echo "$value\n";
}

答案 2 :(得分:0)

实际上php:// input仅在我使用php-cgi而不是php时才有效 因此,传递请求正文代码就像:

  

回显'{“ a”:1}'| php-cgi -r'print(“ input   内容:“ .file_get_contents(” php:// input“));'