2011-03-13 108 views
0

(這是一個非常常見的錯誤,但無法瞭解其意義)「致命錯誤:允許的x字節的內存大小已耗盡(試圖分配y字節)」的含義?

Fatal error: Allowed memory size of x bytes exhausted (tried to allocate y bytes) 

我有一些問題:

  1. 這顯然是內存不足,錯誤,但什麼這是否意味着在外行的條件?
  2. 是否可以從x知道一些信息(如服務器的RAM)?
  3. y怎麼樣?有時候它是一個兩位數的數字。

謝謝。

+1

可能重複的[允許的內存大小33554432字節窮盡(試圖分配12個字節)](http://stackoverflow.com/questions/3666315/allowed-memory-size-of-33554432-bytes-exhausted -tried-to-allocate-12-bytes) – mario 2011-03-13 22:30:36

回答

4
  1. 這意味着PHP腳本使用的內存超過了memory_limit配置選項的值。請注意,這可能會或可能不會符合操作系統認爲腳本的內存使用情況出現在錯誤發生時的情況。
  2. x爲您提供memory_limit配置選項的值。你也可以假定服務器至少有足夠的虛擬內存來處理這個限制,但這就是關於它的。
  3. 不,y只是秸稈的大小,最終打破駱駝的後面。
+0

+1 for straw/camel - 如果OP不是母語英語的話,你可能會很樂意解釋它的含義 – 2011-03-13 22:30:15

+0

@Mark Ba​​ker:哦,那很簡單。 「這是一個成語,是'最後一個小的增加,導致總數超過極限並導致災難性失敗'。 HTTP://en.wiktionary。org/wiki/the_straw_that_broke_the_camel%27s_back)「 – Anomie 2011-03-13 22:36:02

+0

所以'y' ='x' - 'request_size'?非常感謝 – metrobalderas 2011-03-14 16:36:11

2

X = ini_get('memory_limit');

Y = php的要求,即超過限值

這裏的RAM是沒有問題的,做一個更好的PHP腳本或剛剛興起memory_limit的與ini_set

反正你問題是dup和一個簡單的谷歌搜索將解決它

0

Thi由於PHP解釋器對其運行的腳本具有內存大小限制,因此會觸發錯誤。 「x」部分是該限制,「y」是導致腳本觸發錯誤的分配。要覆蓋這一點,你可以使用類似:

php_value memory_limit xxxM 
在你的服務器配置

memory_limit = xxxM 

在PHP配置或

ini_set('memory_limit', 'xxxM'); 

腳本本身。

相關問題