不同之处在于您希望使用它们的环境. php:// stdin,php:// stdout和php:// stderr直接映射到相关的
POSIX file streams,旨在与CLI SAPI一起使用.另一方面,php:// input和php://输出旨在用于基于Web的SAPI.
尝试从命令行运行这两个命令:
printf "foo" | php -r "var_dump(file_get_contents('php://stdin'));"
printf "foo" | php -r "var_dump(file_get_contents('php://input'));"
你会得到这样的输出:
Command line code:1:
string(3) "foo"
Command line code:1:
string(0) ""
因为php://输入期望被WebI使用,如CGI或mod_php,并且不会获得传递给它的STDIN的内容.同样,尝试使用php:// stdin读取原始POST数据(php://输入的唯一实际用途)将失败.
php://输出通常可以在两种环境中使用,但它很少使用,因为可以简单地回显输出. php:// stdout是命令行代码更合理的选择,尽管再次使用echo通常更容易.
php:// stderr对于需要将信息,调试或错误消息输出到与程序输出不同的流的命令行程序员来说当然是无价之宝.