2009-05-04 5 views
0

У меня есть интересная проблема, которая, я думаю, связана с сервером. Я хочу, чтобы CSV-данные сохранялись как CSV-файл, когда пользователь нажимает кнопку. Он отлично работает на моем сервере разработки, но на его производстве это просто эхо-контент на странице. Я предполагаю, что это проблема сервера, но я действительно не уверен, что это может быть. Может ли GZIP повлиять на это?Сохранить csv как файл вложения PHP + установка Apache не работает

Мой код заголовка выглядит следующим образом:

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Length: " . strlen($out)); 
header("Content-type: text/x-csv"); 
header("Content-Disposition: attachment; filename=$filename"); 
echo $out; 

Так что приведенный выше код работает на сервере разработки и производства только будет эхо CSV на страницу. Есть идеи?

+0

Ссылаясь на ответ Кристиана, я изучил HTTP, а живой сервер - это не то же самое. Он добавляет следующее: Vary: Accept-Encoding И тогда Content-Type не то, что я указываю в PHP и курортов: Content-Type: текст/html; charset = iso-8859-1 – AndreLiem

+0

Теперь вы можете добавить более подробную информацию о конфигурации сервера в реальном времени, возможно, мы сможем найти настройку конфигурации, которая ее поддерживает – Christian

+0

Глядя на документы W3C для HTTP/1.1, ключевое слово Vary изменит контент, введите, если тип содержимого, который вы определили, отсутствует в списке. Поэтому вам нужно добавить его в список в httpd.conf или .htaccess. Возможно, добавление текста/x-csv в заголовок Accept-Encoding сделало бы трюк. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html (прокрутить вниз до 14.44) http://httpd.apache.org/docs/2.0/content-negotiation.html –

ответ

1

Единственное, что я могу придумать, это mime-type. У меня были проблемы с типами mime (особенно с .flv-файлами) при переходе с одного сервера на другой.

Что я использовал для CSV-файлов, является application/octet-stream.

Надежда, что помогает

+0

Я попробовал application/octet-stream с той же проблемой ... спасибо, хотя – AndreLiem

+1

добавил приложение/октет-поток csv в файл /etc/mime.types и перезагрузил службу httpd, и он начал работать правильно: CentOS 5.0 производственный сервер. –

0

Да, я предположил бы, что это мим-типа, а также. Возможно, вы захотите попробовать специальный «текст/csv» csv (RFC 4180) или общий «приложение/октет-поток».

0

Просто используйте Wireshark (http://www.wireshark.org) и захватите HTTP-трафик для обоих случаев и ищите различия. Fiddler также должен работать

+0

Спасибо за подсказку, я опробовал скрипач и, достаточно интересно, заголовок на реальном сервере установлен на: text/html; кодировка = изо-8859-1 и не текст/х-CSV Я не уверен, почему это будет перекрываться, хотя ... очень странно. – AndreLiem

 Смежные вопросы

  • Нет связанных вопросов^_^