Como tratar erros no Magento?

6 de janeiro de 2014 Por Ronaldo Gomes

Índice

Um série de ótimas dicas para tratamento de erros do seu Magento. Exemplo: Como desligar o compilador pelo código?
Olá pessoal,
Segue uma série de dicas que há tempo queria postar, pois acredito que irá ajudar muito rs:

1 – Desabilitando um módulo Magento pelo código
Para desabilitar um modulo/plugin sem ter acesso pelo admin do magento basta ir em /app/etc/modules editar o arquivo correspondente ao modulo que deseja desabilitar, editando a linha true para false

2 – Desabilitando a compilação do Magento pelo código
Para desabilitar a compilação sem ter acesso pelo admin do magento basta ir em /includes editar o arquivo chamado config.php comentando a linha abaixo com # na frente
Com o compilador ligado

define(‘COMPILER_INCLUDE_PATH’, dirname(__FILE__).DIRECTORY_SEPARATOR.’src’);

Com o compilador desligado

#define(‘COMPILER_INCLUDE_PATH’, dirname(__FILE__).DIRECTORY_SEPARATOR.’src’);

2.1 – Forçar Recompilação do Magento pelo código

Obs: A pasta que fica localizada dentro da pasta /includes chamada de SRC é onde se encontra todos os arquivos compilados pelo Magento, para forçar pelo código uma nova compilação do Magento, basta renomear essa pasta para -old ou removela. (Recomendo antes só renomeia e se tudo der certo e uma nova pasta SRC for criada automaticamente, ai sim pode remover ela)

3 – Para verificar se um módulo Magento esta instalado pelo banco com o phpmyadmin
Basta ir na tabela core_resource e verificar se o módulo encontra-se nessa tabela.

4 – Para forçar a reinstalação de um módulo do Magento
Basta ir na tabela core_resource verificar se o mesmo encontra-se na tabela e remover a linha do banco. Por exemplo para forçar a reinstalação do módulo OSC basta excluir a linha correspondente a: onepagecheckout_setup 4.0.0 4.0.0
E assim ao entrar na adm do Magento irá forçar o Magento a reinstalar o módulo OSC

5 – Para verificar se existe um campo(Atributo) criado no Magento
Quando se instala o OSC ele faz uma série de instalações de novos campos no bd, no script de install coloquei que verifique antes se o mesmo já existe em sua base Magento. Por exemplo:
Para verificar se seu banco já possui um campo chamado cpf ou tipopessoa basta ir na tabela chamada eav_attribute e ver se o mesmo já encontra-se em seu bd.

6 – Para tornar um campo obrigatório ou remover a obrigatoriedade no Magento
Primeiro basta vc procurar pelo campo na tabela eav_attribute depois basta ver na coluna required, se ele estiver com 0(zero) ele não é obrigatório, mas se ele tiver com o 1(um) ele é obrigatório. Nas versões anteriores do OSC eu coloquei obrigatório o campo tipopessoa, dai ao desabilitar o OSC o usuário não conseguia terminar o seu checkout padrão do Magento, pois o campo tipopessoa esta como obrigatório, ou sejam, required = 1

7 – Para verificar se já existe os estados brasileiros em seu Magento
Basta visitar as tabelas directory_country_region e directory_country_region_name e ver se existe os estados brasileiros em seu banco.

Essa parte foi bem difícil de se mexer com o Install do OSC, pois algumas lojas já possuíam essa personalização, só que como esperado os inputs não são padronizados, existem loja que usam somente o UF ao invés do nome do estado. E nem sempre o id correspondente de cada região bate.

No esquema de busca cep, onde tenho que setar qual estado é correspondente ao cep digitado, tive que fazer 3x para tentar chegar num denominador comum a todos.

Na primeira tentativa fiz com que o estado fosse setado de acordo com seu ID ou seja para o Sao Paulo era setado 508 (Ou seja, para alguns usuários que possuíam uma loja personalizada setava o estado errado, pois para uns São Paulo seria outro número que não seja 508)

Na segunda tentativa eu setava de acordo com a posição dentro do select de cada estado. (Ou seja, funcionava, porém o numero de options dentro de um select variava de acordo com o browser, por isso setava errado em alguns navegadores)
Na terceira e espero ser a última seto de acordo com o contends do select, ou seja +/- assim:

$j(‘select[id*=”‘billing:region”]‘).children(“option:contains(‘Sao Paulo’)”).attr(‘selected’, ‘selected’);

8 – Habilitar exibição do erro no Magento
Não sei se esse é o melhor caminho, mas o uso rs. Para habilitar a visualização dos erros do Magento eu edito o arquivo index.php que fica na raiz do Magento. Ai então basta procurar a linha #ini_set(‘display_errors’, 1); e remover o comentário dela tirando o # da frente.

Geralmente eu também coloco a linha Mage::setIsDeveloperMode(true); abaixo da ini_set(‘display_errors’, 1); Para me mostrar os erros do Magento tb. Dai depois que o projeto estiver ok, eu volto para o estado original.

9 – Erro de codificação.

Bicho essa é foda D+ rs, recententemente peguei para desenvolver o módulo de integração com Ábacos da KPL. Então num certo ponto peguei esse trecho de source na web:




cronexec/observer
addOrder


E adicionei ao meu XML. Só que após add me apresentou um erros que nunca iria saber onde era se não eu ter notado que o erro aconteceu após inserir esse trecho de source. Pois ao add esse trecho acima me apresentou o seguinte erro:

Warning: simplexml_load_string(): Entity: line 35: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xA0 0xA0 0xA0 0xA0 in /usr/share/nginx/html/lib/Varien/Simplexml/Config.php on line 510

#0 [internal function]: mageCoreErrorHandler(2, ‘simplexml_load_…’, ‘/usr/share/ngin…’, 510, Array)
#1 /usr/share/nginx/html/lib/Varien/Simplexml/Config.php(510): simplexml_load_string(‘loadString(‘loadFile(‘/usr/share/ngin…’)
#4 /usr/share/nginx/html/app/code/core/Mage/Core/Model/Config.php(318): Mage_Core_Model_Config->loadModulesConfiguration(Array, Object(Mage_Core_Model_Config))
#5 /usr/share/nginx/html/app/code/core/Mage/Core/Model/App.php(414): Mage_Core_Model_Config->loadModules()
#6 /usr/share/nginx/html/app/code/core/Mage/Core/Model/App.php(343): Mage_Core_Model_App->_initModules()
#7 /usr/share/nginx/html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#8 /usr/share/nginx/html/index.php(87): Mage::run(”, ‘store’)
#9 {main}

Então graças a Deus saquei que esse erro foi por conta da inclusão que fiz e fui rever oque se tratava o erro onde vi que era algo realacionado ao Input is not proper UTF-8, indicate encoding !

Pois então feras, veja bem! Peguei esse trecho de source e para limpar comumente eu abri o notepad colei e depois copiei novamente, então verifiquei que o erro mesmo assim continuava! Foda essa rsrsrs

Então abri a porra da notepad e troquei a fonte para script e veja oque me foi apresentado:

……..
………….
……………….
……………….cronexec/observer
……………….adicionarOrdem
……………….

………….

……..

Ou seja, eu troquei acima os espaços vazios por (.) ponto! pois foi oque me exibiu quando setei a fonte como sendo a script. Resumindo o bloco de notas não limpa tudo e trechos de códigos pego na web podem nos gerar muita dor de cabeça! rsrsrs

OBS: Tome sempre cuidado ao mexer no bd do Magento e faça sempre bkp antes de qualquer alteração e instalação! Recomendo fazer um bkp do banco zipado, ou seja, comprimido. Se tiver Cpanel recomendo usar o item de menu do cpanel chamado backup. No item chamado Fazer Download de Backup de Banco de Dados MySQL e para restaurar essa base nesse mesmo item de menu vá em Restaurar Banco de Dados MySQL escolha a base recém backupeada e envie.

Fonte: http://www.deivison.com.br/

Faça sua loja virtual com a WebCampo, clique e confira!
Att, Ronaldo Gomes
Programador PHP Magento/ Gerencia de Projetos
Tecnólogo em Análise e Desenvolvimento de Sistemas – Faculdade Integrado
Especialista M.B.A em Gerência de Projetos e Governança de TI – Universidade Paranaense
Graduando em Ciências Contábeis -Universidade Estadual do Paraná
Skype: lojawebcampo
E-mail: admin@webcampo.com.br

Site: webcampo.com.br