Pregunta

Esta pregunta ya tiene respuestas aquí :
cerrado Hace 4 años .

Magento 1.9.4 No se ejecuta con PHP 7, mostrando un error al siguiente:

Fatal error: Uncaught Error: Function name must be a string in 
app\code\core\Mage\Core\Model\Layout.php:555 Stack trace: #0 
app\code\core\Mage\Core\Controller\Varien\Action.php(390): Mage_Core_Model_Layout->getOutput() #1 
app\code\core\Mage\Cms\Helper\Page.php(137): Mage_Core_Controller_Varien_Action->renderLayout() #2 
app\code\core\Mage\Cms\Helper\Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home') #3 
app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home') #4 
app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Cms_IndexController->indexAction() #5 
app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index') #6 
app\code\core\Mage\Core\Model\Layout.php on line 555

¿Fue útil?

Solución

Sucede porque en PHP 7 debe aclarar que va a llamar a la variable strong> strong> como un método (función).Por lo tanto, la línea original del código se ve como el siguiente (archivo $callback):

$out .= $this->getBlock($callback[0])->$callback[1]();

Para que funcione en la última versión de PHP, necesitamos reemplazar esta pieza de código por este:

$out .= $this->getBlock($callback[0])->{$callback[1]}();

Consulte este blog para más información.

Otros consejos

Si desea ejecutar su sitio web MAGENTO 1.x en PHP7, debe hacer algunos ajustes pequeños en sus archivos MAGENTO 1.x para que funcione sin ningún problema.

La mayor parte del código MAGENTO sigue siendo válido en PHP 7, hay pocas incompatibilidades que se enumeran a continuación:

1. Problemas uniformes de sintaxis variable:

1.1 Aplicación / código / núcleo / mago / núcleo / modelo / diseño.php: 555

Este archivo causa y error fatal que se bloquea Magento. Anular el archivo y Reemplazar

$out .= $this->getBlock($callback[0])->$callback[1]();

con

$out .= $this->getBlock($callback[0])->{$callback[1]}();

1.2 App \ Code \ Core \ Mage \ ImportExport \ Model \ Import \ Uploader.php: 135

Este archivo Importador Magento CSV. Anule el archivo, luego anule la función _validatefile () y reemplace la línea 135 con Reemplazar

$params['object']->$params['method']($filePath);

con

$params['object']->{$params['method']}($filePath);

1.3 APP \ CODE \ Core \ Mage \ ImportExport \ Model \ Export \ Entity \ Product \ Type \ abstract.php: 99

Esta funcionalidad de exportación de efectos de emisión de Magento. Magento extiende tres clases desde la clase abstracta anterior, por lo que la causa raíz del error dentro de la clase inferior es la línea # 99 en la clase anterior.

mage_importexport_model_export_entity_product_type_configurable Mage_importunexport_model_export_entity_product_type_grouped Mage_importunexport_model_export_entity_product_type_simple

Necesitamos anular por encima de las tres clases en nuestro grupo de códigos local y anular la función OverriderTtribute (), reemplazar la línea # 99

$data['filter_options'] = $this->$data['options_method']();

con

$data['filter_options'] = $this->{$data['options_method']}();

1.4 App \ Code \ Core \ Mage \ ImportExport \ Model \ Export \ Entity \ Cliente.php: 250

Esta funcionalidad de los clientes de Efectos de exportación de archivos. Anule el archivo anterior y cambie la línea # 250 como se muestra a continuación

$data['filter_options'] = $this->$data['options_method']();

con

$data['filter_options'] = $this->{$data['options_method']}();

1.5 lib \ varien \ file \ uploader.php: 259

La carga del archivo no funcionará. Magento extiende mage_core_model_file_uploader desde la clase anterior, por lo que necesitamos anular esta función de clase y reescribir _validatefile () Función Reemplazar debajo de la línea

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

con

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

2. Tipo de problema de casting

2.1 App \ Code \ Core \ Mage \ Core \ Model \ Resource \ Session.php: 218

Las sesiones MAGENTO no funcionan en PHP 7, por lo que, como resultado, el inicio de sesión del usuario no funciona. La función de lectura ($ sessid) debe devolver una cadena, por lo que escriba la variable de retorno como se indica a continuación

return $data;

con

return (string)$data;

3. Grand total incorrecto

Los totales incorrectos se deben al orden de clasificación incorrecto de subtotal, descuento, envío, etc. Corrija el orden de clasificación creando una extensión y coloque por debajo del código en config.xml de la extensión

<global>
    <sales>
        <quote>
            <totals>
                <msrp>
                    <before>grand_total</before>
                </msrp>
                <shipping>
                    <after>subtotal,freeshipping,tax_subtotal,msrp</after>
                </shipping>
            </totals>
        </quote>
    </sales>
</global>

Aquí está la referencia original a lo que publiqué anteriormente: http://scriptbaker.com/tag/magento-1-9/

Si no puede encontrar ninguna consulta en su código, por lo que esto será cubierto por Magento y, como dije antes, la mayor parte del código es válida para que pueda simplemente ignorarlo. Creo que todo puede responder a tu pregunta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top