PHP文档的状态是php://input只能读一次.
在我的应用程序中,我需要读取它两次,一次用于身份验证,一次用于实际处理内容,两个函数都由不同的独立模块处理.疯狂的是:它有效.
我可以指望在任何地方工作,或者这是我的PHP版本(5.2.10)中的侥幸?我能找到的关于这个的唯一文档就是说它不应该工作,没有提到版本限制.
在丹尼斯的预感之后,我做了这个测试:
$in = fopen('php://input', 'r');
echo fread($in, 1024) . "\n";
fseek($in, 0);
echo fread($in, 1024) . "\n";
fclose($in);
echo file_get_contents('php://input') . "\n";
Run Code Online (Sandbox Code Playgroud)
冰壶:
$ curl http://localhost:8888/tests/test.php -d "This is a test"
This is a test
This is a test
Run Code Online (Sandbox Code Playgroud)
显然它只限于每个打开手柄一次读取.
更多的挖掘表明php://input,对于PUT请求确实只能读取一次.上面的示例使用了POST请求.