Отключить загрузчик флэш-памяти в Magento
Существуют ли какие-либо надежные способы отключения загрузчика Flash и использования "классического" загрузчика? Возможно ли это вообще без использования расширения?
Я просто обычно пытаюсь загрузить изображение через администратора - для /var
и /media
(и для всех вложенных папок) установлено значение 777. Ответ, который я получаю в ответ, таков:
{"ошибка": "Файл не был загружен"., "код ошибки":666}
5 answers
Объяснение
Эта ошибка происходит из Varien_File_Uploader::__construct()
в lib/Varien/File/Uploader.php
Вот важные части
<?php
class Varien_File_Uploader
{
/**
* Uploaded file handle (copy of $_FILES[] element)
*
* @var array
* @access protected
*/
protected $_file;
const TMP_NAME_EMPTY = 666;
function __construct($fileId)
{
$this->_setUploadFileId($fileId);
if(!file_exists($this->_file['tmp_name'])) {
$code = empty($this->_file['tmp_name']) ? self::TMP_NAME_EMPTY : 0;
throw new Exception('File was not uploaded.', $code);
} else {
$this->_fileExists = true;
}
}
}
Оглядываясь назад на дерево, вы видите, что это называется
$uploader = new Mage_Core_Model_File_Uploader('image');
, который расширен из класса Varien, поэтому в данном случае Varien_File_Uploader::_setUploadFileId($fileId)
построит массив $this->_file
на основе ключа image
.
Итак, теперь проблема в том, почему $_FILES['image']['tmp_name']
пусто?
Я проверил поле 'error'
, временно заменив его на throw new Exception('File was not uploaded. ' . $this->_file['error'], $code);
У меня 7, который является Failed to write file to disk. Introduced in PHP 5.1.0.
что означает, что это проблема с разрешениями.
Решение
Выполните phpinfo()
, чтобы проверить, где установлен ваш upload_tmp_dir
, и убедитесь, что он доступен для записи.
В моем случае у меня не хватило файлового пространства в каталоге /tmp
моего сервера.
Я всегда использовал загрузчик изображений без вспышки, который работал с CE v1.4-v1.7 без проблем. Модуль больше не доступен через Magento Connect, хотя его исходный код активно поддерживается (по состоянию на октябрь 2016 года) и доступен на GitHub.
Вы можете взять код расширения и просто извлечь ту часть, которая вам нужна, если это действительно необходимо.
Я бы сказал: "нет". Это невозможно из коробки, но я нашел плагин:
Http://www.paoloiannelli.com/2012/07/30/how-to-disable-flash-uploader-magento/
У меня было то же самое, но у меня было обновление Windows. Перезагрузил компьютер, и все снова заработало
Здесь вы можете найти расширение Magento, которое позволяет загружать несколько изображений с помощью jquery и без flash: https://www.magentocommerce.com/magento-connect/multi-images-uploader-jquery-no-flash.html