O PHP 7 está alcançando o status beta e muitos testes estão em andamento no momento. Dado que o Magento alcançou no ano passado de "roda apenas no PHP 5.3" para "totalmente compatível com o PHP 5.6", eu gostaria de saber o quanto eles estão considerando a compatibilidade do PHP 7 com o Magento 1.x e o Magento 2.
Encontrei este post de Anna Filina, onde ela encontrou um problema no Magento 1.9.1 (ainda inalterado no 1.9.2), mas, como o Magento 1 não possui testes de unidade, não acredito que esse seja o único problema.
Portanto, a pergunta é: será garantida a compatibilidade do PHP 7 com o Magento 1? E como o Magento 2 provavelmente já foi testado no PHP 7 (Obrigado por testes automatizados!), Existem problemas conhecidos?
Respostas:
Magento anunciou oficialmente em 20 de janeiro de 2016 que CE e EE 2.0.1 suportam oficialmente o PHP 7.0.2.
Link: https://magento.com/blog/technical/new-magento-20-resources-and-support-php7
fonte
Se você estiver usando a versão mais recente, M CE 1.9.2.2, há uma extensão que trará a compatibilidade total com o PHP 7: https://github.com/Inchoo/Inchoo_PHP7 . (Aviso: sou o autor, embora exista muita ajuda da comunidade.)
Também é instalável através do Composer em http://packages.firegento.com/ .
Todas as incompatibilidades mencionadas aqui são corrigidas. Achamos que ainda pode haver alguns casos extremos, mas nada que pare de mostrar. Testes, relatórios de problemas e solicitações pull são bem-vindos.
fonte
Não faço ideia do PHP7, mas acho que a maioria das coisas ainda é válida no PHP7, você pode encontrar mais informações no blog de Matthias Geniar
Eu acho que a única coisa que podemos ter no Magento é um
preg_replace()
modificador eval, mas espero que não.Além disso, o Magento enviou a versão 1.9.2 com um TAF atualizado, você pode encontrar no dev. Com isso, você poderá executar vários testes de front-end no PHP7 e examinar o log posteriormente
fonte
Nenhum comentário sobre o Magento 1, mas o Magento 2 teve alguns problemas com nomes de classes como "String". Não demorou muito para consertar, mas não funcionou imediatamente. Espero que o Magento 2 seja corrigido, mas ainda não pode ser corrigido devido a outras prioridades primeiro.
fonte
Está quase pronto. Tentei executar um Magento 1.9.2.1 limpo com o PHP 7 RC1, que resultou em uma falha instantânea (erro fatal) do Magento. Depois de corrigir esse problema, tudo parecia estar funcionando, exceto o back-end, no qual eu não conseguia fazer login. Mais tarde, acabou por ser um problema relacionado à sessão que pode ser corrigido.
Resumidamente:
O erro fatal pode ser corrigido substituindo
Mage_Core_Model_Layout
e alterando a linha 555 de:$out .= $this->getBlock($callback[0])->$callback[1]();
para
$out .= $this->getBlock($callback[0])->{$callback[1]}();
O problema sessão temporariamente pode ser corrigido, substituindo
Mage_Core_Model_Session_Abstract_Varien
e reescrever ogetData
,setData
,unsetData
,addFullNames
métodos, por isso em todos os lugares em que$this->_data
foi usado, ele será substituído por$_SESSION
.Se alguém estiver interessado na solução, ela pode ser encontrada aqui .
fonte
Varien_File_Uploader
, consulte magento.stackexchange.com/questions/93066/…O Magento2 está pronto para o PHP 7. A adaptação do código ao PHP7 foi feita e todas as alterações estão disponíveis no ramo de desenvolvimento. Veja o problema no GitHub
Além disso, o suporte ao php 7 no Magento1 exige alterações incompatíveis com versões anteriores e acho que não será suportado oficialmente.
fonte
Há um problema com a forma como o Magento está calculando o total geral do pedido e aplicando os descontos. Isso também interrompe o check-out expresso do Paypal, pois os itens de linha não somam o total geral com o desconto.
O problema parece ser que ele
Mage_Sales_Model_Config_Ordered::_compareTotals()
não está funcionando da mesma maneira no PHP7 que o PHP5 euasort()
agora depende de um relacionamento transitivo para a encomenda, mas isso não precisa ser para os totais da ordem.Tente usar: -
fonte
Esta é minha pesquisa que quero compartilhar com você sobre as incompatibilidades do magento php7. Atualmente, encontrei alguns lugares em que o código deve falhar devido à sintaxe variável uniforme.
Arquivo: app / code / core / Mage / ImportExport / Model / Export / Entity / Product / Type / Abstract.php
Método: overrideAttribute
Arquivo: app / code / core / Mage / ImportExport / Model / Export / Entity / Customer.php
Método: filterAttributeCollection
Arquivo: app / code / core / Mage / ImportExport / Model / Import / Uploader.php
Método: _validateFile
Arquivo: app / code / core / Mage / Catalog / Model / Product / Link / Api / V2.php
Método: assign
Arquivo: app / code / core / Mage / Catalog / Model / Product / Link / Api / V2.php
Método: atualização
Arquivo: lib / Varien / Arquivo / Uploader.php
Método: _validateFile
Arquivo: app / code / core / Mage / Core / Model / Layout.php
Método: getOutput
fonte
Além das outras respostas relacionadas ao Magento 1:
Uma incompatibilidade do PHP 7
Zend_XmlRpc_Server
foi corrigida no Zend Framework 1.12.12Todas as versões anteriores da CE 1.9.2.2 / EE 1.14.2.2 usam uma versão mais antiga do Zend Framework, portanto, podem ter problemas se você usar a API XML-RPC do Magento.
fonte
Verifique os arquivos do inchoo que foram alterados para tornar o M1 compatível com o php 7; essas são pequenas alterações em alguns arquivos, mas um trabalho inteligente do Inchoo. https://github.com/Inchoo/Inchoo_PHP7/tree/master/app/code/local/Inchoo/PHP7
fonte
Estou usando o Magento 2 CE versão 2.1.4 e funciona bem.
magento \ app \ bootstrap.php
fonte
Resposta curta é não, não é. Magento CE 1.9.2.4 suporta apenas PHP 5.4 e 5.5 oficialmente. E enquanto o PHP 5.6 o executa perfeitamente, satura os arquivos de log com inúmeras mensagens de aviso.
A resposta longa é que é relativamente fácil modificá-lo para executar o suporte ao PHP7. No entanto, muitas extensões ainda não são compatíveis com o PHP7, então você está sozinho.
fonte
O PHP 7.0 é o fim da vida útil na primeira semana de dezembro de 2018.
Até agora, a versão atual do Magento 2.2.3 (versão de 20 de fevereiro de 2018) não suporta PHP 7.1 ou PHP 7.2.
Você pode confirmar as versões suportadas, verificando
app/bootstrap.php
sua pasta de instalação do Magento e procurando um código semelhante ao seguinte:Também parece haver problemas nos
.htaccess
quais causam 500 erros no apache 2.4.Além disso, o arquivo do compositor incluído contém apenas dependências para o php5.5
fonte