Magento 1.9.2 y php7 - error de carga de imagen


9

Solo estoy probando Magento 1.9.2 con Php 7. Todo parecía funcionar, pero de repente intenté subir una imagen para el producto. Recibí un error como el siguiente:

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

Alguien sabe como arreglarlo?

Función afectada en upload.php en la línea alrededor 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']);
            }
        }
    }

Respuestas:


34

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

Debido a la sintaxis variable uniforme, el código ahora se interpreta estrictamente de izquierda a derecha.

La línea

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

debiera ser

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

Puede encontrar una descripción general de todos los archivos para editar en esta respuesta .


Genial, funciona al 100%. Espero que Magento 1.9.2 no tenga ninguna otra incompatibilidad con php 7. ¡Gracias por la ayuda!
sellio

este código funciona para mí magento 1.9.2.4
matinict

Esta solución tiene todos los archivos que necesitará editar para un buen rendimiento de PHP7
Alex Timmer

Impresionante ... Funciona bien para mí
Ramesh Kumar

2

Además de las respuestas anteriores, no olvide comprobar el archivo:

\ incluye \ src \ Varien_File_Uploader.php en la línea 259

Reemplazar

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

con

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

¿simplemente volver a compilar en lugar de editar estos archivos temporales?
Andy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.