2011-04-04 82 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后的状态初始化。