在PHP中读取原始I / O流的替代方法

时间:2011-02-02 15:09:11

标签: php file-io io

我试图找到一个替代阅读php://输入。我使用它来从CURL PUT获取XML数据。

我通常这样做:

$xml = file_get_contents('php://input');

但是,我在Windows上遇到file_get_contents()的一些问题。

是否有替代方案,可能使用fopen()fread()

2 个答案:

答案 0 :(得分:1)

是的,你可以这样做:

$f = fopen('php://input', 'r');
if (!$f)  die("Couldn't open input stream\n");
$data = '';
while ($buffer =  fread($f, 8192)) $data .= $buffer;
fclose($f);

但是,你必须问自己的问题是为什么file_get_contents不在Windows上工作?因为如果它不起作用,我怀疑fopen是否适用于同一个流......

答案 1 :(得分:0)

确定。我想我找到了解决方案。

$f = @fopen("php://input", "r");
$file_data_str = stream_get_contents($f);
fclose($f);

另外,有了这个,我没有被要求加入文件大小。