Opencart 2: Export-Import - ошибка Could not close zip file php://output.
Модуль Import/Export Tool - из самого названия понятно, что модуль позволяет импортировать и экспортировать данные магазина из/в формат Excel (*.xls). Модуль хоть и не очень красивый, зато функциональный и самое главное - бесплатный. Поэтому пользуеться популярностью и часто подвергаеться переработкам, например наш модуль прайс-листа для Opencart 2 созданный именно на основе этого модуля.
Но в этой статье мы будем расказывать не о возможностях модуля, а об ошибке, которая возникает при попытке экспорта товаров или других данных через модуль: ошибка называеться Could not close zip file php://output.
Сообщение об ошибке указывает на то, что библиотека PHPExcel не смогла записать файл во временную директорию /tmp, так как скорее всего не смогла ее определить.
Можно выяснять почему скрипт /system/PHPExcel/Classes/PHPExcel/Shared/File.php не получает значение глобальной переменной upload_tmp_dir из php.ini, но эта проблема на разных серверах может решать по разному. А можно узнать путь к временной директории и прописать его в скрипт принудительно. Для этого:
1. Узнаём значение upload_tmp_dir из php.ini. Кто не не знает как это делать, просто создаете в корне сайта файл info.php с содержимым
<?php phpinfo(); ?>
Потом вызываете его http://сайт.ру/info.php и ищите параметр upload_tmp_dir
2. Далее открываем выше упомянутый /system/PHPExcel/Classes/PHPExcel/Shared/File.php, идём в конец файла realpath и на строке около 178 находим вывод
return realpath(sys_get_temp_dir());
Комментируем его (мало ли, пригодится) и вместо него пишем:
return "значение переменной upload_tmp_dir";
например:
return "/home/opencart2x/data/mod-tmp";
Вот и все, теперь пробуйте делать экспорт.
Популярные модули Opencart 2