Magento 1.9.2 e php7 - erro de upload de imagem


9

Estou apenas testando o Magento 1.9.2 com o Php 7. Tudo parecia funcionar, mas de repente tentei fazer upload de imagens para o produto. Eu tenho erro como abaixo:

Fatal error</b>:  Uncaught Error: Function name must be a string in /home/admin/domains/store.com/public_html/dev/lib/Varien/File/Uploader.php:259
Stack trace:
#0 /home/admin/domains/store.com/public_html/dev/lib/Varien/File/Uploader.php(180): Varien_File_Uploader-&gt;_validateFile()
#1 /home/admin/domains/store.com/public_html/dev/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php(46): Varien_File_Uploader-&gt;save('/home/admin/dom...')
#2 /home/admin/domains/store.com/public_html/dev/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Adminhtml_Catalog_Product_GalleryController-&gt;uploadAction()
#3 /home/admin/domains/store.com/public_html/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action-&gt;dispatch('upload')
#4 /home/admin/domains/store.com/public_html/dev/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard-&gt;match(Object(Mage_Core_Controller in <b>/home/admin/domains/store.com/public_html/dev/lib/Varien/File/Uploader.php

Alguém sabe como consertar isso?

Função afetada em upload.php na linha em torno de 259

protected function _validateFile()
    {
        if ($this->_fileExists === false) {
            return;
        }

        //is file extension allowed
        if (!$this->checkAllowedExtension($this->getFileExtension())) {
            throw new Exception('Disallowed file type.');
        }
        //run validate callbacks
        foreach ($this->_validateCallbacks as $params) {
            if (is_object($params['object']) && method_exists($params['object'], $params['method'])) {
                $params['object']->$params['method']($this->_file['tmp_name']);
            }
        }
    }

Respostas:


34

http://php.net/manual/de/migration70.incompatible.php https://wiki.php.net/rfc/uniform_variable_syntax

Devido à sintaxe variável variável, o código agora é interpretado estritamente da esquerda para a direita.

A linha

$params['object']->$params['method']($this->_file['tmp_name']);

deveria estar

$params['object']->{$params['method']}($this->_file['tmp_name']);

Você pode encontrar uma visão geral de todos os arquivos para editar nesta resposta .


Legal, funciona 100% Espero que o Magento 1.9.2 não tenha nenhuma outra incompatibilidade no php 7. Obrigado pela ajuda!
sellio

este código funciona para mim magento 1.9.2.4
matinict

Esta solução tem todos os arquivos que você precisa para editar para um bom desempenho PHP7: magento.stackexchange.com/a/105604/37536
Alex Timmer

Impressionante ... bem Ele está trabalhando para mim
Ramesh Kumar

2

Além das respostas acima, não se esqueça de verificar o arquivo:

\ includes \ src \ Varien_File_Uploader.php na linha 259

Substituir

$params['object']->$params['method']($this->_file['tmp_name']);

com

$params['object']->{$params['method']}($this->_file['tmp_name']);

simplesmente recompile em vez de editar esses arquivos temporários?
21417 Andy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.