异常“无法在BinaryFileResponse实例上设置内容。”仅在生产服务器上抛出

我希望我的用户下载.csv文件。

控制器中的代码可在本地计算机和开发服务器上完美运行。但是,它在生产服务器上不起作用。

框架为Laravel 5.5.44

PHP版本为7.2

$videos = Video::whereNotNull('title')->get();

//First row for labels
$list = array([
    'id'            => 'Video ID','director'      => 'Director','title'         => 'Title',]);

foreach($videos as $video) {
    $list[] = [
        'id'            => $video->id,'director'      => $video->director,'title'         => $video->title,];
}

$today = date('Ymd');
$filename = $today.'-list.csv';
$fp = fopen(storage_path($filename),'w');

foreach ($list as $fields) {
    fputcsv($fp,$fields);
}
fclose($fp);

return response()->download(storage_path($filename)); 

在生产服务器上触发控制器时,我得到: prod.ERROR: The content cannot be set on a BinaryFileResponse instance.而不是下载文件。

我刚刚注意到,只有将应用程序环境设置为正式版时,才会引发异常。

通过设置,我能够在本地计算机上重现该行为

APP_ENV=prod.env文件中。

我很困惑。我在官方文档中找不到足够的信息,但我仍然不知道如何解决这个奇怪的问题。

yangpq008 回答:异常“无法在BinaryFileResponse实例上设置内容。”仅在生产服务器上抛出

您的AfterMiddleware试图在Response上设置内容,而您无法对BinaryFileResponse对象执行此操作,对setContent的任何调用都会导致此错误。

您将必须确定是否需要使用的vrkansagara/lara-out-press中间件。

本文链接:https://www.f2er.com/3156514.html

大家都在问