Call to `ob_end_clean` would error if the environment did not use the
PHP `output_buffering` option. This adds an additional check and updates
the comment to be more specific to the exact scenario of the condition.
Tested with output_buffering=Off and output_buffering=4096
Closes #3415
protected function streamedDownloadResponse($stream, string $fileName): StreamedResponse
{
return response()->stream(function () use ($stream) {
- // End & flush the output buffer otherwise we still seem to use memory.
+
+ // End & flush the output buffer, if we're in one, otherwise we still use memory.
+ // Output buffer may or may not exist depending on PHP `output_buffering` setting.
// Ignore in testing since output buffers are used to gather a response.
- if (!app()->runningUnitTests()) {
+ if (!empty(ob_get_status()) && !app()->runningUnitTests()) {
ob_end_clean();
}