内存耗尽使用php://输入

时间:2013-07-23 13:12:01

标签: php memory input upload limit

当使用fopen(“php:// input”)上传120MB文件时,我们会收到来自php的“内存耗尽”警告。 php memory_limit设置为256MB,我们有足够的可用内存。

我们删除了除fopen(“php:// input”)之外的所有代码,但它仍然失败,因此错误必须在那里。

我们尝试了不同的内存限制,大约500MB的错误消失了。尽管如此,我们真的不应该使用500MB,所以问题仍然存在:为什么我们在一个115-120MB大小的文件上使用fopen会出现内存耗尽错误。

我们的php测试文件:

<?php
    $inputHandler = fopen('php://input', "r");
?>

错误:

262144000 bytes exhausted (tried to allocate 120829495 bytes)

我希望有人可以帮助我们。这让我们疯了!

提前致谢!

2 个答案:

答案 0 :(得分:0)

尝试配置无限内存使用:

ini_set('memory_limit', '-1');

答案 1 :(得分:0)

这可能是因为php试图自动解析POST数据。 要禁用此功能,在php版本5.4+中,您可以将enable_post_data_reading设置为0.(为此,我使用了.htaccess) 但实际上,在php 5.4+中,最好使用$ _FILES进行上传...