Ну да, всё правильно, поля класса - это константы его экземпляров. Имеет смысл выносить в константы все статичные данные, что идентичны и повторяется более 1 раза в коде =) на сколько я помню. Тем более, если они используются в методах класса.
Всё, проблема решилась как только я полез смотреть заголовок! =)
В заголовке стоит PK, но прежде идет закомментированный кусок SQL кода в тегах <!-- ... -->, по которому, по всей видимости, был сформирован документ. Первое что пришло в голову - прочитать содержимое в переменную, найти strpos по "-->" и сделать substr.
Сработало!!! Теперь проблема русского имени. Решается с помощью PclZip 2.8.2 - в новой версии есть возможность написать обработчик по событию разархивирования очередного файла. Там-то я и меняю имя файла на нормальное =)
Если разархивировать винраром и заархивировать им же, то всё замечательно работает! Значит вопрос в нехватке памяти отпадает, по всей видимости действительно архив в другом формате который не поддерживается
2alpha_beta:
- Исходный файл открывается винраром.
- Перепакованый винраром архив открывается и ZipArchive(), и PclZip..
- Исходный файл не открывается ни ZipArchive(), ни PclZip..
Всё это говорит о том, что изначально документ заархивирован чем-то другим, соответствующим требованиям zip, но не поддерживающимся ни ZipArchive(), ни PclZip. Что это может быть за...? Чем еще можно так криво заархивировать?
..казадлсь бы то что нужно! Но PclZip у меня вообще ничего не хочет разархивировать почему-то. А про нужный мне архив вообще пишет PCLZIP_ERR_BAD_FORMAT (-10) : Invalid archive structure
Тем не менее, виндовый архиватор никаких ошибок не видит и всё нормально вытаскивает.
Пробовал так же точно назвать по русски маленький текстовый файл, заархивировал его и загрузил вместо рабочего архива - без проблем переименовалось через renameIndex и разархивировалось под новым именем. Но в прямом виде без переименования разархивироваться тоже не захотело..
Не понятно почему не удается открыть поток по имени..
И вот тут я начал задумываться об ограничениях на используемую память в PHP. В php.ini поставил 256Мб лимит на использование ОЗУ для скриптов и переменную output_buffering с 4096 увеличил до 8192. Результат тот же, к сожалению...
Библиотека Pclzip тоде не может разархивировать.
Может быть кто-нибудь знает способ разархивирования конкретного файла по индексу или имени с указанем не только папки назначения, но и нового имени файла - во что его сразу переименовать? Думаю, если такое есть, то это сработает..
Пока пытаюсь "испортить" Pclzip в этом направлении.
Такая проблема - архив содержит файл с русскими буквами в имени и я никак не могу его разархиваровать. Дело скорее всего в размере файла - это XLS документ размером 4Мб. Получаю я его автоматически, т.е. на этапе архивирования переименовать не могу.