Сохранение в файл не работает через SSL

Aptem

Новичок
Сохранение в файл не работает через SSL

Привет, всем.

Такой вопрос. Вот есть у меня такой скрипт:
PHP:
  $output = fopen ( 'php://output', 'w' ) or die ( "Can't open php://output" );
  $tmp = "Content-Disposition: attachment; filename=\"example.csv\"";
  header ( 'Content-Type: application/csv' );
  header ( $tmp );

  $foo = "bla bla bla";
  fwrite ( $output, $foo );

   fclose ( $output ) or die ( "Can't close php://output" );
Скрипт сохраняет какую-то инфу в csv-файл и отдает пользователю на скачку. Все работает прекрасно. Но как только я коннекчусь к тому же скрипту используя SSL, то выдается такая ошибка "Не удается загрузить такой-то файл. Не удается открыть этот узел и прочее прочее".

В чем ошибка? Как лечить?

Спасибо за внимание.
 

kode

never knows best
ошибка в браузере, это раз.

используй echo вместо записи в php://output, он бинарнобезопастный
 

Aptem

Новичок
И правда в Opera и Mozilla все работает!
Неужели IE и правда такой глючный.

А как быть? У меня все пользователи на IE сидят. И врят ли будут другим браузером пользоваться.

Примечание: "у меня все пользователи" - локальная сеть :)
 

MaxiStyle

Новичок
У меня скрипт через SSL прекрасно отдает фалы на всех браузерах через readfile. Может действительно сменить способ выдачи файла?
 

Aptem

Новичок
Спасибо за ответы.

А как отдать файл по-другому? Я просто с таким не встречался никогда. Как использовать readfile? Я так понимаю использовать readfile нужно когда файл уже есть на сервере. А я же формирую его на лету.
 

Aptem

Новичок
Автор оригинала: dimagolov
Aptem, а чам банальное echo тебя не устраивает?
Я попробовал вот так:
PHP:
header('Content-Disposition: attachment; filename="users.csv"');
header('Pragma: no-cache');
header('Content-type: text/x-comma-separated-values');
echo $csv_text;
Эффект тот же. Браузер (только IE) ругается на недоступность файла.
 

fixxxer

К.О.
Партнер клуба
поищи по форуму, обсуждалось, был какой-то воркэраунд.
 

Aptem

Новичок
Да везде примеры только с echo или подобное этому. А как отдать файл по http? А в моем примере он как отдается? Не по http?
 

Aptem

Новичок
То есть вы имеете ввиду страницы грузить через ssl, а файлы отдавать не шифруя?
 

MaxiStyle

Новичок
Действительно по https через echo не выдает.

Aptem
Убери header('Pragma: no-cache'); или напиши header("Pragma: public");
Похоже IE не может ракодировать данные, не сохранив их на компе...
 

Aptem

Новичок
Убери header('Pragma: no-cache'); или напиши header("Pragma: public");
Похоже IE не может ракодировать данные, не сохранив их на компе...
Совершенно верно. Все заработало! Нужно было прагма паблик поставить. Спасибо за помощь, MaxiStyle.

Вот рабочий код формирования файла на лету при подключении через SSL:
PHP:
header('Content-Disposition: attachment; filename="users.csv"'); 
header('Pragma: public'); 
header('Content-type: text/x-comma-separated-values'); 
echo $csv_text;
Еще раз всем спасибо!
 
Сверху