Magento 1.9.2 i php7 - błąd przesyłania obrazu


9

Właśnie testuję Magento 1.9.2 z Php 7. Wszystko wydawało się działać, ale nagle próbowałem załadować obraz produktu. Mam błąd jak poniżej:

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

Czy ktoś wie jak to naprawić?

Wpływ na funkcję w upload.php na linii około 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']);
            }
        }
    }

Odpowiedzi:


34

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

Ze względu na jednolitą składnię zmiennych kod jest teraz interpretowany ściśle od lewej do prawej.

Linia

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

Powinien być

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

W tej odpowiedzi można znaleźć przegląd wszystkich plików do edycji .


Fajnie, działa w 100% Mam nadzieję, że Magento 1.9.2 nie ma żadnej innej niezgodności php 7. Dzięki za pomoc!
sellio

ten kod działa dla mnie magento 1.9.2.4
matinict

To rozwiązanie zawiera wszystkie pliki, które musisz edytować, aby uzyskać dobrą wydajność PHP7
Alex Timmer

Niesamowite ... Działa dla mnie dobrze
Ramesh Kumar

2

Oprócz powyższych odpowiedzi nie zapomnij sprawdzić pliku:

\ zawiera \ src \ Varien_File_Uploader.php w linii 259

Zastąpić

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

z

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

po prostu ponownie skompilować zamiast edytować te pliki tymczasowe?
Andy,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.