图像仅在流式传输(?)到客户端时的某些时间加载

Image only loading some of the time when streamed(?) to client

我编写 Web 应用程序已经有一段时间了,并且 运行 遇到了一些与服务图像相关的问题。

我的代码从服务器拉取文件数据,使用file_get_contents,并使用Slim的Request object的write方法输出文件内容,按原样设置 headers 。对于大多数文件,这可行,但是较大的图像通常只显示图像尺寸的灰色轮廓(在移动和桌面 Chrome 中测试)。请求错误 ERR_SPDY_PROTOCOL_ERROR,这让我相信这是一个 HTTP 2 问题(我测试的服务器侦听 HTTP 2 连接,在其 nginx 配置中使用 listen [port] http2 指令设置),但是我尝试使用 PSR-7 的 RequestInterfacewithProtocolVersion 方法降级响应中使用的 HTTP 版本,但没有任何改变。

我知道使用 file_get_contents 然后输出所述内容是一种非常迂回的做事方式,但这是我所知道的允许该应用程序的用户任意设置上传文件位置的唯一方式。

这是我的代码中最相关的部分,其中 $filepath 是用户请求的文件的路径。此代码适用于除大图像之外的所有文件。

return $response->withHeader('Content-Type', mime_content_type($filepath))->write(file_get_contents($filepath));

我使用 Guzzle 的 LazyOpenStream class 解决了这个问题。现在似乎完美无缺!

编辑: 所以,虽然这最初似乎没有用,但结果是 nginx 的一些文件权限在我更改后搞砸了用户---nginx 不再拥有其 FastCGI 缓存目录。幸运的是,现在已经修复了,一切似乎都正常。
如果你处于我的情况,请提示:Read The Frackin' L哎呀!