Magento 1.9.2 та php7 - помилка завантаження зображення


9

Я просто тестую Magento 1.9.2 з Php 7. Здавалося, все працює, але раптом я спробував завантажити зображення для продукту. Я отримав помилку, як показано нижче:

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

Хтось знає, як це виправити?

Функція впливає на upload.php у рядку близько 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']);
            }
        }
    }

Відповіді:


34

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

Через синтаксис змінної змінної код тепер інтерпретується строго зліва направо.

Лінія

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

має бути

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

Ви можете знайти огляд всіх файлів для редагування в цій відповіді .


Класно, працює на 100% Я сподіваюся, що Magento 1.9.2 не має іншої несумісності php 7. Дякуємо за допомогу!
Sellio

цей код працює для мене magento 1.9.2.4
ранок

У цьому рішенні є всі файли, які вам потрібно буде відредагувати для хорошої продуктивності PHP7
Alex Timmer

Дивовижно ... Для мене це добре працює
Рамеш Кумар

2

Окрім наведених вище відповідей, не забудьте перевірити файл:

\ включає \ src \ Varien_File_Uploader.php у рядку 259

Замініть

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

з

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

просто перекомпілювати, а не редагувати ці тимчасові файли?
Енді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.