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']);
            }
        }
    }
sellio
fonte

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 .

Detzler
fonte
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']);
Drashya Kuruwa
fonte
simplesmente recompile em vez de editar esses arquivos temporários?
21417 Andy