За последние 24 часа нас посетили 22266 программистов и 1179 роботов. Сейчас ищут 707 программистов ...

PHP office и буффер обмена

Тема в разделе "Yii", создана пользователем Coolkop, 1 авг 2016.

  1. Coolkop

    Coolkop Новичок

    С нами с:
    1 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    добрый вечер.

    Подскажите, у меня на локальном сервере при экспорте excel с сайта была ошибка, файл выходил, но excel его не открывал, ругаясь, что формат не соответствует и т.д.
    Внутри файла xls выхода вся страница сайта, с меню с данными и т.д.
    На странице вызова экспорта работает Pjax.

    помогла функция ob_end_clean .

    PHP:
    1. header('Content-Type: application/vnd.ms-excel');
    2. header('Content-Disposition: attachment;filename='.$filename .' ');
    3. header('Cache-Control: max-age=0');
    4. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    5. $objWriter->save('php://output');
    Когда всё перенес на хост, всё работает так, как будто эта функция не работает. Тоже самое при экспорте excel.

    Можно быть нужно какой-то модуль php включить? Но такой информации не могу найти
     
    #1 Coolkop, 1 авг 2016
    Последнее редактирование модератором: 2 авг 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Можно для ссылки отключить pjax, вызвать sendFile чтобы layout и view не попадало в буфер
    http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html
    Sending Files
    http://www.yiiframework.com/doc-2.0/guide-runtime-responses.html#sending-files

    php://memory and php://temp
    https://php.ru/manual/wrappers.php....n-unknown-unknown-unknown-unknown-descriptios

    Можно писать в php://temp например, и потом отдать файл или сохранить во временной папке и отдать.
     
    Coolkop нравится это.
  3. Coolkop

    Coolkop Новичок

    С нами с:
    1 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    Основной проблемой оказалось отсутствие exit после $objWriter->save('php://output');
    Но тогда на странице вывода отображалась дикая кракозябра, а файл сохранялся только если сделать обновление этой страницы.

    Внесение data-pjax="0"; в ссылку на страницу вывода могло решить эту проблему. Файл стал сразу сохраняться.

    Но на хосте сказали следующее:
    Мы отключили функцию PHP output_buffering в файле .htaccess, внеся в него следующую строку:
    php_flag output_buffering Off

    Спасибо!

    PS. остальные предложенные варианты не пробовал.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Ставь лайки если помог!
     
  5. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @denis01, какой ты жадный стал до лайков :D
     
    denis01 нравится это.
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @mr.akv да ты просто стремительно сокращаешь отставание, Денис волнуется :D
     
    denis01 и mr.akv нравится это.
  7. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    denis01 нравится это.
  8. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Да вообще срать на лайки.
    Никогда тут не было не лайков ничего, сделали эту хуйню, как образин-форум стал.
     
    denis01 нравится это.
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Больше лайков!

    Готовлюсь за ранее,увеличиваю обороты.
    Буду теперь в личные сообщения писать, просить лайки :rolleyes:

    Поддерживаю! Поставь мне лайк.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Если не лайкать - угрожать начнёшь небось? :D
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @igordata конечно, я же могу заблокировать :p шутка
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    вот этим словом ты испортил такое классное сообщение. Все могли про тебя думать как про сумасшедшего модератора, который банит за то, что под его сообщением не появилось лайка. Но теперь сообщение попахивает ребяческим задором, и никак не мотивирует тебя лайкать. Эх.
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Ganzal я всё равно могу блокировать, верно? :rolleyes:
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @denis01 больной ублюдок (тм) :D
     
  15. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    а я почти всегда всех лайкаю, кто что-то правильное написал :p
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Мойте руки перед едой. Переходите дорогу только на зелёный свет.
     
    denis01 нравится это.
  17. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    послу туалета можно и помыть

    Если машине нету, то зачем ждать, можно переходить
     
  18. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Мне в питере за это устное предупреждение сделали. Было раннее солнечное утро, на улице ни души (я тоже без души, и мусора тоже), на дороге ни машины, просматривается по километру в каждую сторону. Решил перейти. Был остановлен экипажем ППС на разъяснение правил ДД, действующих в северной столице.
     
    denis01 нравится это.
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Ganzal запишем, смотреть по сторонам и переходить на красный, если нет полиции.