마 젠토 1.9.2 및 PHP7-이미지 업로드 오류


9

Php 7로 Magento 1.9.2를 테스트하고 있습니다. 모두 작동하는 것처럼 보였지만 갑자기 제품의 이미지를 업로드하려고했습니다. 아래와 같은 오류가 발생했습니다.

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

누구든지 고치는 법을 알고 있습니까?

259 경 줄의 upload.php에 영향을주는 기능

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']);

이 답변 에서 편집 할 모든 파일의 개요를 찾을 수 있습니다 .


Cool, works 100 % Magento 1.9.2에 다른 PHP 7 비 호환성이 없기를 바랍니다. 도와 주셔서 감사합니다!
sellio

이 코드는 나를 위해 작동합니다. magento 1.9.2.4
matinict

이 솔루션에는 좋은 PHP7 성능을 위해 편집해야 할 모든 파일이 있습니다 : magento.stackexchange.com/a/105604/37536
Alex Timmer

굉장한 ... 그것은 나를 위해 잘 작동
Ramesh Kumar

2

위의 답변 외에도 파일을 확인하는 것을 잊지 마십시오.

259 행의 \ includes \ src \ Varien_File_Uploader.php

바꾸다

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

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

이 임시 파일을 편집하지 않고 단순히 다시 컴파일 하시겠습니까?
Andy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.