Tela branca no Magento 1. Como resolver?
Desenvolvimento, Gerenciar minha loja, Magento 1
Atualizado em 11 de setembro de 2020
Este é um problema que afeta não apenas lojas Magento, mas aplicações PHP de uma forma geral.
Uma aplicação Magento (ou PHP) pode apresentar uma tela em branco quando um erro PHP ocorre e é omitido pelas configurações do sistema.
Para resolver o problema, precisamos primeiro descobrir o que está causando este erro. Em outras palavras, qual é o erro?
Modo desenvolvedor no Magento
O modo desenvolvedor faz com que erros e exceções do Magento sejam exibidos na tela, ao invés de serem apenas logados.
Desta forma, se o seu PHP estiver configurado para não exibir erros na tela, uma exceção do Magento seria exibida ao invés de gravada em var/log/system.log.
Por exemplo: Mage::getModel('core/url')->metodoQueNaoExiste()
passará a exibir uma exceção ou um arquivo de erro salvo em var/report/[numero-do-erro]
.
a:5:{i:0;s:66:"Invalid method Mage_Core_Model_Url::metodoQueNaoExiste(Array ( ) )";i:1;s:3316:"#0 /Users/martins/www/cursoback/magento/app/design/frontend/rwd/default/template/page/html/footer.phtml(33): Varien_Object->__call('metodoQueNaoExi...', Array) #1 /Users/martins/www/cursoback/magento/app/design/frontend/rwd/default/template/page/html/footer.phtml(33): Mage_Core_Model_Url->metodoQueNaoExiste() #2 /Users/martins/www/cursoback/magento/app/code/core/Mage/Core/Block/Template.php(241): include('/Users/martins/...') #3 /Users/martins/www/cursoback/magento/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/rwd/de...') #4 /Users/martins/www/cursoback/magento/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView() #5 /Users/martins/www/cursoback/magento/app/code/core/Mage/Core/Block/Abstract.php(923): Mage_Core_Block_Template->_toHtml() #6 /Users/martins/www/cursoback/magento/app/code/core/Mage/Core/Block/Abstract.php(641): Mage_Core_Block_Abstract->toHtml()
Se ativarmos o modo desenvolvedor isto fica bem mais fácil e o erro é exibido direto na tela.
Para ativar o modo desenvolvedor
Para ativar o modo desenvolvedor você precisa apenas setar a variável de servidor $_SERVER['MAGE_IS_DEVELOPER_MODE']
com qualquer valor.
Se estiver usando Apache e o mod_env estiver disponível, basta adicionar a seguinte linha no seu arquivo /.htaccess
SetEnv MAGE_IS_DEVELOPER_MODE true
Idealmente você deve trabalhar com o modo desenvolvedor somente no seu ambiente local, e nunca em produção. Se o problema ocorre em sua loja em produção, é recomendável que olhe os logs de erro do PHP e do Apache/Nginx.
Erros do PHP
Em outros casos mais comuns o problema pode estar em erros do PHP que estão sendo omitidos.
Geralmente erros omitidos são logados no seu PHP.
Vejamos o cenário abaixo:
Forçando PHP a Exibir erros
Se você estiver no ambiente local de desenvolvimento, você pode simplesmente forçar o PHP a exibir erros na tela.
Isso pode ser feito de duas maneiras:
Direto no index.php do Magento
Adicionando as seguintes linhas:
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
Alterando as configurações do php.ini (recomendado)
Adicionando/modificando as seguintes linhas no arquivo php.ini:
display_errors=On
error_reporting=E_ALL
No caso acima, o trata-se de um método depreciado no PHP. E neste caso em especial, o problema é no core do Magento, pois estou executando um Magento 1.9.3.1 em um PHP 7.2.
Vendo os logs do PHP (ideal para lojas em Produção)
Caso sua loja esteja em produção, precisamos ver se o PHP está configurado para logar estes erros e onde ele irá logar isso.
Estas informações podem ser facilmente encontradas no <?php phpinfo();
da nossa loja.
Desta forma, todos os erros serão logados no arquivo especificado em error_log. E assim podemos usar o comando tail -f para acompanhar o final deste arquivo.
Quando nada mais funcionar
Quando nada mais parece funcionar e não conseguimos exibir uma mensagem de erro com sucesso, é possível que um erro fatal esteja ocorrendo em algum lugar.
Para solucionar este impasse, podemos registrar um handler para lidar com isso. Fazemos isso adicionando algo como isso ao nosso index.php:
ini_set('error_reporting', E_ERROR); register_shutdown_function("fatal_handler"); function fatal_handler() { $error = error_get_last(); echo("<pre>"); print_r($error); }
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/tela-branca-no-magento/"]