Magento 1.9.2 et php7 - erreur de téléchargement d'image


9

Je suis en train de tester Magento 1.9.2 avec Php 7. Tout semblait fonctionner, mais soudain, j'ai essayé de télécharger une image pour le produit. J'ai eu une erreur comme ci-dessous:

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

Quelqu'un sait comment le réparer?

Fonction affectée dans upload.php à la ligne autour 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']);
            }
        }
    }

Réponses:


34

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

En raison de la syntaxe variable variable, le code est désormais interprété strictement de gauche à droite.

La ligne

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

devrait être

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

Vous pouvez trouver un aperçu de tous les fichiers à modifier dans cette réponse .


Cool, fonctionne à 100% J'espère que Magento 1.9.2 n'a pas d'autre incompatibilité php 7. Merci pour l'aide!
sellio

ce code fonctionne pour moi magento 1.9.2.4
matinict

Cette solution contient tous les fichiers que vous devrez éditer pour une bonne performance PHP7
Alex Timmer

Génial ... Ça marche bien pour moi
Ramesh Kumar

2

En plus des réponses ci-dessus, n'oubliez pas de vérifier le fichier:

\ comprend \ src \ Varien_File_Uploader.php sur la ligne 259

Remplacer

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

avec

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

simplement recompiler plutôt que modifier ces fichiers temporaires?
Andy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.