当使用fopen(“php:// input”)上传一个120MB文件时,我们得到了来自php的“内存耗尽”警告。 php memory_limit被设置为256MB,我们有足够的内存可用。内存耗尽使用php://输入
我们删除了除fopen(“php:// input”)以外的所有代码,但它仍然失败,所以错误必须存在。
我们尝试了不同的内存限制,在大约500MB时,错误消失。不过,我们真的不应该使用500MB,所以问题仍然存在:为什么我们在115-120MB大小的文件上使用fopen来获得内存耗尽错误。
我们的PHP的测试文件:
<?php
$inputHandler = fopen('php://input', "r");
?>
和错误:
262144000 bytes exhausted (tried to allocate 120829495 bytes)
我希望有人能帮助我们。这让我们生气了!
在此先感谢!
你不应该只在从$ inputHandler读取时在fopen()上得到这个错误 –
你的fopen处理程序不是唯一使用你的PHP内存的东西。在尝试将大文件加载到内存之前,使用'memory_get_usage()'来查看已经使用了多少内存。 – aynber
@MarkBaker这就是我们也想到的,但这是唯一的代码行,它崩溃了。当我们观察httpd进程时,我们可以看到文件上传时内存在上升,但从未超过130MB。 –