Альтернативный способ чтения необработанного потока ввода-вывода в PHP - PullRequest
4 голосов
/ 02 февраля 2011

Я пытаюсь найти альтернативу чтению php: // input.Я использую это для получения данных XML из CURL PUT.

Обычно я делаю это с:

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

Однако у меня есть несколько проблем с file_get_contents() в Windows.

Есть ли альтернатива, возможно, с использованием fopen() или fread()?

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Да, вы можете сделать:

$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 будет работать для того же потока ...

0 голосов
/ 02 февраля 2011

Хорошо. Я думаю, что нашел решение.

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

Кроме того, я не обязан указывать размер файла.

...