У меня есть PHP-скрипт как часть моей системы, которая объединит файлы в tar.gz, tar.xz или zip-файл и доставляет их пользователю, просматривающему сайт ,Создание файла tar.gz с PHP, сжатый файл
Скачивание файлов tar.xz и zip выполняется безупречно. Но с tar.gz у меня не так много удачи.
Я использую Apache 2.2.15 с модулем mod_deflate и настроен на выход gzip.
Если вы делаете запрос с Accept-Encoding: gzip, он отправляет tar.gz с двойным сжатием (например, gz (gz (tar (...)))), который, насколько я понимаю, является «правильный» способ (хотя это бесполезно двойное сжатие).
Я устанавливаю заголовок Content-Type: application/x-gzip
из PHP при доставке этого файла.
Когда я это делаю, кажется, что Firefox не отменяет второй уровень сжатия gzip при загрузке (слой, который применяет Apache). Когда я изменяю тип контента на что-то еще, проблема не возникает, и я получаю файл tar.gz. В обоих случаях Apache добавляет еще один уровень сжатия и отправляет заголовок Content-Encoding: gzip
.
Как я могу решить эту проблему, сохраняя желаемый тип контента, чтобы пользователь мог фактически открыть файл в правильной программе?
Но я знаю, что это пример XY задачи, так как правильно исправление будет отключить дополнительную компрессию в Apache. Я не хочу, однако, отключить сжатие для остальной части моего сайта. Как я могу заставить PHP сказать Apache, чтобы он не сжимал этот конкретный вывод?
Вы можете отключить gzip для определенных вещей в apache. Вам не нужно отключать его для всего вашего сайта. – PeeHaa