Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deinha

[Resolvido] Erro: "Cannot redeclare class JMenuSite"

Recommended Posts

Oi pessoal, tudo bem?

 

Seguinte, tenho um site em joomla 1.5 que migramos de um servidor para outro.

 

Estamos usando como base o template Mocha, mas depois que migramos o servidor, o template não exibe mais.

 

O painel administrativo está ok e outros templates também estão ok, mas quando tentamos acessar o site aparece a seguinte mensagem:

 

Fatal error: Cannot redeclare class JMenuSite in E:\vhosts\turhotelitalia.com.br\httpdocs\site\includes\menu.php on line 89

 

Já verifiquei compatibilidade de versões, mas está tudo certo.

 

Segue o código do arquivo menu.php. A linha 89 corresponde a última linha.

 

<?php

// Check to ensure this file is within the rest of the framework

defined('JPATH_BASE') or die();

/**
 * JMenu class
 *
 * @package		Joomla.Framework
 * @subpackage	Application
 * @since		1.5
 */
class JMenuSite extends JMenu
{
	/**
	 * Loads the entire menu table into memory
	 *
	 * @access public
	 * @return array
	 */
	function load()
	{

		$cache = &JFactory::getCache('_system', 'output');

		if (!$data = $cache->get('menu_items')) {
		// Initialize some variables
		$db		= & JFactory::getDBO();

		$sql	= 'SELECT m.*, c.`option` as component' .
				' FROM #__menu AS m' .
				' LEFT JOIN #__components AS c ON m.componentid = c.id'.
				' WHERE m.published = 1'.
				' ORDER BY m.sublevel, m.parent, m.ordering';
		$db->setQuery($sql);

		if (!($menus = $db->loadObjectList('id'))) {
			JError::raiseWarning('SOME_ERROR_CODE', "Error loading Menus: ".$db->getErrorMsg());
			return false;
		}

		foreach($menus as $key => $menu)
		{
			//Get parent information
			$parent_route = '';
			$parent_tree  = array();
			if(($parent = $menus[$key]->parent) && (isset($menus[$parent])) &&
				(is_object($menus[$parent])) && (isset($menus[$parent]->route)) && isset($menus[$parent]->tree)) {
				$parent_route = $menus[$parent]->route.'/';
				$parent_tree  = $menus[$parent]->tree;
			}

			//Create tree
			array_push($parent_tree, $menus[$key]->id);
			$menus[$key]->tree   = $parent_tree;

			//Create route
			$route = $parent_route.$menus[$key]->alias;
			$menus[$key]->route  = $route;

			//Create the query array
			$url = str_replace('index.php?', '', $menus[$key]->link);
			if(strpos($url, '&') !== false)
			{
			   $url = str_replace('&','&',$url);
			}

			parse_str($url, $menus[$key]->query);
		}

			$cache->store(serialize($menus), 'menu_items');
		$this->_items = $menus;
		} else {
			$this->_items = unserialize($data);
	}
	}
}

Verifiquei pesquisando no Google que outras pessoas encontraram o mesmo problema, porém não consegui encontrar nenhuma solução.

 

Alguém teria alguma idéia de como posso resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho isso acontecer durante uma migração... como estão as permissões de pasta?

 

Como efetuaram a migração? especificamente da template como você fez para restaurar a mesma no outro servidor? você copiou e colou ou fez um zip da pasta da template?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade nós reinstalamos tudo no novo servidor, do zero. Nada foi mudado.

Usei os mesmos zips que usei no servidor antigo para instalar o template.

A única parte estranha é que no outro servidor funcionava e no novo não funciona. Verifiquei que outras pessoas que tiveram este mesmo problema, também tiveram na troca do servidor.

 

As permissões estão todas ok. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo você zipou a template alterada e instalou como se faz com uma template baixada?

 

edit:

Digo isso porque ja tive problemas ao tentar instalar uma template que modifiquei e zipei, o jeito foi copiar a pasta para o novo servidor e jogar na pasta templates...

 

Faz o seguinte:

 

Faz uma nova instalação do joomla ai no servidor apontando para outro bd (um novo), copia o seu template alterado para a pasta templates, altere as permissões para esta pasta da template, depois que tudo estiver funcionando certinho altera no backend o banco de dados para o da sua empresa veja se funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Eu instalei o zip original do template, baixado do site do template.

Já reinstalamos o joomla 3 vezes. Na primeira vez instalamos e depois substituimos o banco de dados pelo antigo, mas deram muitos erros, então reinstalamos de novo com um novo banco de dados. Ai achamos que poderia ser pelo fato que no servidor antigo a instalação tinha sido feita com as páginas de exemplo. Então deletamos o banco e o joomla e reinstalamos tudo de novo, do zero.

 

Foi tudo reinstalado do zero, com novos bancos e zips originais do template e dos plugins. Não existe nenhum arquivo alterado, todos são originais (baixados diretamente da página de extensões do joomla e da página do template).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai pessoal, consegui resolver!

 

Por algum motivo, nesse servidor o fato de ter 2 arquivos "menu.php" (o do joomla e o do template), estava gerando conflito. Dessa forma, ele entendia como o mesmo arquivo sendo declarado duas vezes.

 

Para solucionar o problema renomeei o arquivo do template para menu2.php e alterei o nome também no código da index.php do template, onde chama este menu. Agora está funcionando ok.

 

Obrigada. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que Conseguiu resolver e voltou aqui para contar-nos como, qualquer coisa estamos ai!

 

Aquele abraço!

 

Ai pessoal, consegui resolver!

 

Por algum motivo, nesse servidor o fato de ter 2 arquivos "menu.php" (o do joomla e o do template), estava gerando conflito. Dessa forma, ele entendia como o mesmo arquivo sendo declarado duas vezes.

 

Para solucionar o problema renomeei o arquivo do template para menu2.php e alterei o nome também no código da index.php do template, onde chama este menu. Agora está funcionando ok.

 

Obrigada. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.