Erro fatal: chamar uma função de membro reescrever () em um não-objeto após a atualização

12

Tentamos atualizar nossa instalação do Magento de 1.7.0.2 para 1.8.0.0. Agora temos o seguinte erro em todas as páginas:

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165

Tentamos limpar todos os caches, desativar e recompilar o compilador e reindexar o indexador. Hoje cedo tudo correu bem em nossa instalação local. Esta é a mesma instalação, exceto alguns pedidos e dados do cliente.

Quando o compilador está ativado, o erro é alterado em:

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/includes/src/__default.php on line 17761

Como podemos depurar esse erro?

Michael
fonte
Eu também atualizei para o 1.8 magento O Mine tem o mesmo problema, mas o erro que estou recebendo não está no intervalo ... veja o erro como abaixo:> Erro fatal: chame uma função de membro getProductAttribute () em um> não-objeto no > /home/shopk3if/public_html/app/design/frontend/base/default/template/catalog/product/price.phtml> na linha 50 plz me ajuda para o código porque eu não sou o desenvolvedor ...
Tem certeza de que a compilação foi desativada?
precisa saber é o seguinte
@MichaelvanEijden Você conseguiu rastrear a causa raiz disso?
Alan Storm
1
@AlanStorm Por algum motivo, houve apenas uma parte dos arquivos transferidos durante a atualização. Sua resposta me levou ao lugar certo. Obrigado!
Michael
Tenho o mesmo problema ... mas agora tentei sobrescrever todos os arquivos com o conteúdo do arquivo de instalação ZIP do magento .... mas não ajudou. Isso se tornará uma sessão de depuração muito longa! Nenhuma atualização do Magento até agora funcionou para mim sem problemas!
cljk

Respostas:

5

Olhando para a linha 165

#File: app/code/core/Mage/Core/Controller/Varien/Front.php
$this->_getRequestRewriteController()->rewrite();

O método _getRequestRewriteControllerdeve retornar um objeto. Por alguma razão, não está retornando um objeto no seu sistema.

Examinando essa definição de método, vemos o seguinte

protected function _getRequestRewriteController()
{
    $className = (string)Mage::getConfig()->getNode('global/request_rewrite/model');

    return Mage::getSingleton('core/factory')->getModel($className, array(
        'routers' => $this->getRouters(),
    ));
}

Mage examina o global/request_rewrite/modelnó de configuração para encontrar um alias de classe. Em um sistema de armazenamento, isso deve ser

core/url_rewrite_request

Qual Magento então usa para instanciar um modelo. Minhas duas suposições são

  1. Há um módulo com um nome de classe inválido diferente aqui, que impede o Magento de instanciar o objeto.

  2. Seu sistema está sem o Mage_Core_Model_Url_Rewrite_Requestarquivo de classe (at app/code/core/Mage/Core/Model/Url/Rewrite/Request.php), que é novo no Magento 1.8

Alan Storm
fonte
1
Além disso, veja a resposta / comentários de @navotjer abaixo.
Alan Storm
7

Eu tive o mesmo problema e, além de limpar o cache, tive que definir as permissões de pasta no / var e subdiretórios para 777 (não se preocupe, o arquivo .htaccess em / var impede que tudo seja legível "humano").

navotjer
fonte
1
Encontrei isso hoje e apoiando esta resposta - desmarcar uma nova base de código Magento pode alterar as permissões da sua varpasta, o que significa que o Magneto pode reverter para uma pasta var do sistema que possui uma configuração antiga em cache.
Alan Storm
+1 Você salvou meu dia! Estava atualizando de 1.6.0.1 para 1.9.0.1
toesslab
2

Se você possui um servidor de cache como o memcached, tente reiniciá-lo também. Eu tive o mesmo problema e resolvi dessa maneira.

cavbleu
fonte
Ou se Redis:redis-cli flushall
kiatng
2

Limpar cache redis;

redis-cli

FLUSHALL

Seu problema resolvido.

Knase
fonte
2

Tentei seguir a explicação de @AlanStorm, mas finalmente achei que era um problema de cache. Eu apenas tive que rm -rf *todos os arquivos ~/public_html/var/cachee descobri que o site foi carregado corretamente.

user3604
fonte
Simples assim. Eu tive o mesmo problema ao atualizar de 1,7 para 1,9, mas esqueci de limpar a pasta de cache.
Ricardo Martins
1

Eu tenho o mesmo problema

Fatal error: Call to a member function rewrite() on a non-object in /home/clientname/domains/domain.com/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php on line 165

A exclusão de tudo em / var / cache resolve o problema

Krysis
fonte
0

A exclusão de tudo em var / cache também resolveu o problema.

Também foi necessário excluir o arquivo maintenance.flag antes que esse problema ocorresse, pois havia uma página de manutenção.

Kelly
fonte