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出于某种原因对序列化文件有问题?
你可以尝试再次增加内存限制,然后强制错误发生?你提供的错误信息表示一个* 20兆字节*的内存限制,而不是你说你增加了512的内存限制。也许你忘了在更改php.ini之后重新启动Web服务器软件,或者有多个php.inis? – Charles 2011-04-04 16:40:50
我重新启动了Web服务器,并通过调用phpinfo()来确保更高的限制生效。当我发现即使512M没有解决问题,我也把下限返回,这是错误发生的时间。 – tlayton 2011-04-04 21:18:22
如果上传实际上有什么问题? – 2011-04-05 14:26:56