У меня есть сервер, на котором работает небольшое приложение, которое мы используем для создания .docx.
Он отлично работал на старом сервере, но мне пришлось переместить его на другой, и теперь у него есть большая проблема: когда я запускаю свой php-скрипт на основе PHPWord, выходные файлы повреждены и не могут быть использованы (MS Word сообщает «The файл xyz.docx не открывается из-за проблем с содержимым).
Также не помогает изменение расширения файла с .docx на .zip (просто чтобы взглянуть на его содержимое).
«Смешная» сторона этой проблемы заключается в том, что на том же сервере, с той же версией PHP, с nginx 1.2.3 он исчезает, а файл .docx идеален (хорошо, если не заботиться о содержании... но это уже другая проблема...).
Я мог бы включить nginx, но у меня другая проблема: я не могу читать специальные символы Latin1, как ожидалось.
После долгого поиска кода в Google я обнаружил, что проблема связана со следующей строкой, содержащейся в библиотеке Template.php PHPWord, строка 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.
- Я не вижу сообщения об ошибке
Есть идеи?