4

当使用 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)

我希望有人可以帮助我们。这让我们抓狂!

提前致谢!

4

2 回答 2

0

尝试配置为无限内存使用:

ini_set('memory_limit', '-1');
于 2013-07-23T13:25:19.090 回答
0

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

于 2014-01-27T08:26:21.683 回答