我配置了一个新的Web服务器。现在我从备份中恢复旧网站。出于某种原因,我收到了这个错误:
[Sat Aug 09 04:10:49 2014] [warn] [client X.X.X.X] mod_fcgid: stderr: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 71 bytes) in /var/www/clients/client3/web3/web/libraries/joomla/error/exception.php on line 117
第117行:
$this->backtrace = debug_backtrace();
对我来说很清楚index.php中有一些内存泄漏。这不是我的网站所以我无法真正改变该脚本中的任何内容。但它适用于旧服务器。任何人都知道造成它的原因是什么?我已经增加了php.ini中的memory_limit。
这是脚本(index.php):
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
JPluginHelper::importPlugin('system');
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
$mainframe->triggerEvent('onAfterInitialise');
$mainframe->route();
$Itemid = JRequest::getInt( 'Itemid');
$mainframe->authorize($Itemid);
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
$mainframe->triggerEvent('onAfterRoute');
$option = JRequest::getCmd('option');
$mainframe->dispatch($option);
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
$mainframe->triggerEvent('onAfterDispatch');
$mainframe->render();
JDEBUG ? $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');
echo JResponse::toString($mainframe->getCfg('gzip'));
在我看来,getApplication()函数以某种方式导致内存泄漏。 phpinfo()结果:http://pastebin.com/GEtqfWsK
答案 0 :(得分:0)
当我将我的网站(基于Joomla)从旧服务器移动到新服务器时,我一直收到此错误。关于memory_limit的建议对我没有帮助。 当我从&#39; memcache&#39;更改了$ cache_handler时问题解决了。发送文件&#39;在configuration.php(Joomla根目录)。