sendFile
sendFile
Всем привет, столкнулся с такой проблемой на сервере есть лежит файл с расширение .сfe , при попытке скачать его напрямую к примеру
/frontend/web/files/файл.cfe он скачивается без проблем и не ломается, при скачивание через Yii::$app->response->sendFile(); он его ломает и отдаёт изменённый файл при попытке запустить файл пишет не верный формат файл, кто подскажет в чём может быть проблема
/frontend/web/files/файл.cfe он скачивается без проблем и не ломается, при скачивание через Yii::$app->response->sendFile(); он его ломает и отдаёт изменённый файл при попытке запустить файл пишет не верный формат файл, кто подскажет в чём может быть проблема
Re: sendFile
Нюанс, на локальном сервере отдаёт не сломанный, на сервере ломает
Re: sendFile
Возможно, профайлер засоряет его. Отключите отладочную панель и попробуйте ещё раз.
Re: sendFile
Не помогло к сожаления, вообще ума не приложу в чём может быть проблема, может быть проблема в https ?
Re: sendFile
На хостинге тоже работает нормально, но на своем серевере под ubuntu ломает, может какаято деректива отключена в php ini или конфиг сервера, ни кто не знает что может быть ?
Re: sendFile
Что с размером файлов? Вы пытались посмотреть на содержимое "побитого" файла? Попробуйте сверить файлы по содержимому.
Re: sendFile
Размер не меняется, содержимое немного отличается.
Re: sendFile
Копайте тогда в исходники, смотрите код, который используется в sendFile, и пробуйте написать аналогичный рабочий. Если у вас заработает, значит, что-то неправильно либо в коде фреймворка, либо в настройках фреймворка.
Re: sendFile
Проблему решил, может кому пригодится,
перед вызовом Yii::$app->response->sendFile(); добавил конструкцию:
if (ob_get_level()) {
ob_end_clean();
}
перед вызовом Yii::$app->response->sendFile(); добавил конструкцию:
if (ob_get_level()) {
ob_end_clean();
}
Re: sendFile
Так это локальная проблема или баг фремворка?
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: sendFile
Альтернативное решение проблемы топикстартера - в php.ini нужно установить output_buffering в 0
For users confused about getting "1" as a return value from ob_get_level at the beginning of a script: this likely means the PHP ini directive "output_buffering" is not set to off / 0. PHP automatically starts output buffering for all your scripts if this directive is not off (which acts as if you called ob_start on the first line of your script).