Модуль Import/Export Tool ошибка 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";

Вот и все, теперь пробуйте делать экспорт.

 

Теги: Export-Import