Laravel 8触发stream_set_chunk_size chunk size超过laravel 24215454报错如何解决?
stream_set_chunk_size 报错修复指南
完整报错信息:stream_set_chunk_size(): The chunk size cannot be larger than laravel 24215454
运行环境:Laravel 8 + XAMPP 3.3.0

触发原因
- PHP底层对
stream_set_chunk_size()函数的块大小参数限制为不超过PHP_INT_MAX - 1,当Laravel处理大体积响应(大文件下载、批量数据返回等)时,自动计算的块大小超出该阈值就会触发报错 - XAMPP 3.3.0默认搭载的PHP 8.0早期版本存在流块大小校验逻辑bug,也会导致正常场景下误触发该报错
修复方案
- 固定Laravel流块大小配置
在项目根目录public/index.php文件的最顶部添加如下代码,手动限制块大小为1MB:define('LARAVEL_STREAM_CHUNK_SIZE', 1024 * 1024); - 临时关闭响应分块
如果是在文件下载场景触发报错,可在下载响应逻辑中添加withoutChunking()方法:return response()->download($yourFilePath)->withoutChunking(); - 修复PHP底层bug
将XAMPP搭载的PHP版本切换到7.4系列,或者升级到8.0.20+、8.1.7+版本,重启Apache服务后即可解决底层校验问题。
内容的提问来源于stack exchange,提问作者Pri Nce
相关产品推荐
相关产品推荐

