当前位置:  开发笔记 > 编程语言 > 正文

php:// input和php:// stdin之间有什么区别?

如何解决《php://input和php://stdin之间有什么区别?》经验,为你挑选了1个好方法。

同样php://output和之间有什么区别php://stdout

我试图弄清楚服务器如何提供php://inputphp://output.我能想到的唯一的办法(假设两者php://inputphp://output是根据独立神秘的php.ini文件中的这个页面在手册中)将改变stdin,并stdout以两指连接插座的文件描述符.但令我懊恼的是,我发现了这一点php://stdin并且php://stdout也被定义了 - 大概是以不同的方式.

这只是冗余还是这些文件名实际上是指做不同的事情?谁能告诉我这里发生了什么?



1> miken32..:

不同之处在于您期望使用它们的环境。php://stdin,,php://stdoutphp://stderr直接映射到相关的POSIX文件流,并且旨在与CLI SAPI一起使用。在另一方面,php://inputphp://output打算与基于Web的SAPIs使用。

尝试从命令行运行以下两个命令:

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://input期望被CGI或mod_php之类的Web SAPI使用,并且不会获取传递给它的STDIN的内容。同样,尝试使用读取原始POST数据(的唯一真正用途php://inputphp://stdin会失败。

php://output通常可以在两种环境中使用,但很少使用,因为一个人可以简单地echo输出。php://stdout对于命令行代码来说,是更合乎逻辑的选择,尽管再次使用它通常更容易echo

php://stderr 对于需要将信息,调试或错误消息输出到与程序输出不同的流的命令行程序员来说,这无疑是无价的。

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有