У меня есть сервер, который запускает небольшое приложение, которое мы используем для создания .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, поэтому буду очень признателен за любую помощь.
Подводя итог:
Любая идея?
Вы можете использовать PclZip вместо ZipArchive.
\PhpOffice\PhpWord\Settings::setZipClass(\PhpOffice\PhpWord\Settings::PCLZIP);
Других решений пока нет …