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

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 .

Detzler
la source
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']);
Drashya Kuruwa
la source
simplement recompiler plutôt que modifier ces fichiers temporaires?
Andy