2011-04-04 90 views
2

我有一個在服務器上運行的基本MediaWiki安裝。當我嘗試上傳文件,我得到以下錯誤:MediaWiki在上傳文件時耗盡PHP的內存限制

Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 131072 bytes) in /var/www/wiki/includes/BagOStuff.php on line 404 

線到它指的是:

function _serialize(&$data) { 
    $serial = serialize($data); 
    if(function_exists('gzdeflate')) { 
     return gzdeflate($serial); // line 404 
    } else { 
     return $serial; 
    } 
} 

奇怪的是,上傳似乎確實做工精細;在出錯後,瀏覽到文件的頁面顯示它已經上傳。此外,錯誤只發生在上傳新文件時,而不是在更新現有文件時發生。

即使使用非常小的圖像文件,甚至當PHP的內存限制增加到512M時,也會發生這種情況,因此內存問題本身似乎不太可能。 gzdeflate出於某種原因對序列化文件有問題?

+2

你可以嘗試再次增加內存限制,然後強制錯誤發生?你提供的錯誤信息表示一個* 20兆字節*的內存限制,而不是你說你增加了512的內存限制。也許你忘了在更改php.ini之後重新啓動Web服務器軟件,或者有多個php.inis? – Charles 2011-04-04 16:40:50

+0

我重新啓動了Web服務器,並通過調用phpinfo()來確保更高的限制生效。當我發現即使512M沒有解決問題,我也把下限返回,這是錯誤發生的時間。 – tlayton 2011-04-04 21:18:22

+0

如果上傳實際上有什麼問題? – 2011-04-05 14:26:56

回答

2

您正在使用哪個版本的MediaWiki,並檢查了您的LocalSettings.php?對於1.15及更早的,還有默認情況下,有一條線,將覆蓋你的php.ini:

ini_set('memory_limit', '20M'); 

,然後嘗試在phpinfo()函數來LocalSettings,不是一個獨立的文件的末尾,所以顯示MW後的狀態初始化。