Magento 1.9.2 e PHP7 - Errore di caricamento dell'immagine
-
13-12-2019 - |
Domanda
Sto solo testando Magento 1.9.2 con PHP 7. Tutti sembravano funzionare, ma improvvisamente ho provato a caricare un'immagine per il prodotto.Ho ricevuto un errore come sotto:
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->_validateFile()
#1 /home/admin/domains/store.com/public_html/dev/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/GalleryController.php(46): Varien_File_Uploader->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->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->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->match(Object(Mage_Core_Controller in <b>/home/admin/domains/store.com/public_html/dev/lib/Varien/File/Uploader.php
.
Qualcuno sa come risolverlo?
Funzione interessata in upload.php in linea intorno a 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']);
}
}
}
. Soluzione
http://php.net/manual/de/migration70.incompatible.php . https://wiki.php.net/rfc/uniform_variable_syntax
A causa della sintassi variabile uniforme, il codice è ora interpretato rigorosamente da sinistra a destra.
La riga
$params['object']->$params['method']($this->_file['tmp_name']);
.
dovrebbe essere
$params['object']->{$params['method']}($this->_file['tmp_name']);
.
Puoi trovare una panoramica di tutti i file da modificare in Questa risposta .
Altri suggerimenti
Oltre alle risposte sopra, non dimenticare di controllare il file:
\ include \ src \ varien_file_uploader.php on line 259
Sostituisci
$params['object']->$params['method']($this->_file['tmp_name']);
.
con
$params['object']->{$params['method']}($this->_file['tmp_name']);
.