當使用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。 –