LeRatO
Новичок
Spreadsheet_Excel_Writer не работает на сервере...
Добрый день.
Для экспорта в MS Excel использую связку PEAR + PEAR::Spreadsheet_Excel_Writer (+PEAR::OLE).
PEAR установлен в одну из корневых папок сайта, параметр include_path корректируется в самом скрипте. Проверено - путь формируется корректно. Также проверено, все pear-компоненты находятся.
Проблема в том, что локально работет, но стоит залить все на сервер, итогом отработки срипта становится пустой файл. При этом лог ошибок пустой.
Где искать решение проблемы? Перекопала поиском несколько веток темы этого и других форумов - одни вопросы без ответов.
-~{}~ 26.02.08 21:42:
Решение найдено собственными силами. Дублирую его сюда, вдруг кому поможет....
Класс Spreadsheet_Excel_Writer использует в том числе
классы OLE-компонентв PEAR. Если покопать эти классы, то становится понятно, что коннет Excel-файла пишется во временный файл с именем OLEB.tmp.
Так вот если этот самый самый файл оказывается в папке, где нет прав перезаписи, то... итог - пустой файл!
Наше решение простое. С помощью метода setTempDir одного из классов OLE-компонента меняется местоположение временного файл:
То есть, временный файл помещается в туже папку, куда ложаться временные файлы при аплоаде.
$this->xls_stream - это объект класса Spreadsheet_Excel_Writer. Просто в нашем случае экспорт реализован классом.
Вот и вся хитрость. Пользуйтесь, и не ругайтесь на PEAR-класс - он рабочий!!!
Добрый день.
Для экспорта в MS Excel использую связку PEAR + PEAR::Spreadsheet_Excel_Writer (+PEAR::OLE).
PEAR установлен в одну из корневых папок сайта, параметр include_path корректируется в самом скрипте. Проверено - путь формируется корректно. Также проверено, все pear-компоненты находятся.
Проблема в том, что локально работет, но стоит залить все на сервер, итогом отработки срипта становится пустой файл. При этом лог ошибок пустой.
Где искать решение проблемы? Перекопала поиском несколько веток темы этого и других форумов - одни вопросы без ответов.
-~{}~ 26.02.08 21:42:
Решение найдено собственными силами. Дублирую его сюда, вдруг кому поможет....
Класс Spreadsheet_Excel_Writer использует в том числе
классы OLE-компонентв PEAR. Если покопать эти классы, то становится понятно, что коннет Excel-файла пишется во временный файл с именем OLEB.tmp.
Так вот если этот самый самый файл оказывается в папке, где нет прав перезаписи, то... итог - пустой файл!
Наше решение простое. С помощью метода setTempDir одного из классов OLE-компонента меняется местоположение временного файл:
Код:
$this->xls_stream->setTempDir(ini_get('upload_tmp_dir'));
$this->xls_stream - это объект класса Spreadsheet_Excel_Writer. Просто в нашем случае экспорт реализован классом.
Вот и вся хитрость. Пользуйтесь, и не ругайтесь на PEAR-класс - он рабочий!!!