ZipArchive addFromString не работает должным образом в Windows

У меня есть сервер, который запускает небольшое приложение, которое мы используем для создания .docx.

Он отлично работал на старом сервере, но мне пришлось перенести его на другой сервер, и теперь у него есть большая проблема: когда я запускаю свой php-скрипт — на основе PHPWord — выходные файлы не работают и не могут быть использованы (MS Word сообщает « Файл xyz.docx не может быть открыт из-за проблем с содержимым).

Также не помогает изменение расширения файла с .docx на .zip (просто чтобы посмотреть его содержимое).

«Забавная» сторона этой проблемы заключается в том, что на том же сервере, использующем ту же версию PHP, с nginx 1.2.3 он исчезает, а файл .docx безупречен (хорошо, если не волнует содержимое … но это еще одна проблема …).

Я мог бы включить nginx, но у меня другая проблема: я не могу читать специальные символы Latin1, как ожидалось.

После долгого поиска и поиска в коде я обнаружил, что проблема заключается в следующей строке, содержащейся в библиотеке Template.php в PHPWord, lin 105:
$ this -> _ objZip-> addFromString (‘word / document.xml’, $ this -> _ documentXML);

Он, очевидно, работает нормально (и на nginx он действительно работает нормально), но выдает поддельный .docx, который невозможно открыть.

Я безуспешно пробовал разные версии сервера apache, поэтому буду очень признателен за любую помощь.

Подводя итог:

  • Я протестировал мой скрипт (который использует PHPWord) на хосте Windows Server 2003 и php 5.2.8
  • Работает нормально с nginx
  • Он создает плохой файл .docx с apache (ZipArchive addFromString не работает)
  • Я проверил это, используя несколько версий Apache, от 2.0.64 до 2.2.25
  • Я не вижу ни одного сообщения об ошибке

Любая идея?

4

Решение

Вы можете использовать PclZip вместо ZipArchive.

Пример кода :

\PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]