ограничения размера входного потока php - PullRequest
8 голосов
/ 24 мая 2011

Я пытаюсь прочитать необработанный поток ввода из php, используя php: // input.Это работает для большинства файлов, однако файлы размером более 4 МБ игнорируются при загрузке.Я установил post_max_size и upload_max_size на 20M каждый, думая, что это решит мою проблему, но это не так.Есть ли другой параметр php.ini, который нужно настроить, или мне нужно выполнить чанкинг?Если так, как бы я поступил так?Вот код upload.php:

$fileName = $_SERVER['HTTP_X_FILE_NAME'];
$contentLength = $_SERVER['CONTENT_LENGTH'];

file_put_contents('uploads/' . $fileName, file_get_contents("php://input"));

1 Ответ

10 голосов
/ 24 мая 2011

Попробуйте stream_copy_to_stream, который напрямую закачивает содержимое ввода в файл, не копируя его сначала в память:

$input = fopen('php://input', 'rb');
$file = fopen($filename, 'wb');
stream_copy_to_stream($input, $file);
fclose($input);
fclose($file);

Альтернатива:

$input = fopen('php://input', 'rb');
$file = fopen($filename, 'wb');
while (!feof($input)) {
    fwrite($file, fread($input, 102400));
}
fclose($input);
fclose($file);
...