gpt4 book ai didi

php - 内容长度 header 设置不正确

转载 作者:可可西里 更新时间:2023-10-31 23:21:23 25 4
gpt4 key购买 nike

我有一个 php 脚本(实际上是 https://drupal.org/project/file_force),它通过向响应添加正确的 header 来强制单击链接的用户下载该链接。

此链接在 90% 的情况下都能正常工作。有时会传递不正确的内容长度,因此用户会收到明显被截断的文件。该错误始终发生在特定文件上,但如果重新上传这些文件,则错误可能不会出现在新实例上,这让我认为这不是文件的问题,而是某处的缓存。所以我每次都运行 clearstatcache() 无济于事。奇怪的是 php 正在传递正确的文件大小,或者说当我将它插入的字符串传递到日志文件时它是正确的。

相关代码如下:

  clearstatcache();
return array(
'Content-Type: ' . $mimeinfo,
'Content-Disposition: ' . $disposition . '; filename="' . basename($filepath) . '";',
// Content-Length is also a good header to send, as it allows the browser to
// display a progress bar correctly.
// There's a trick for determining the file size for files over 2 GB. Nobody
// should be using this module with files that large, but… the sprintf()
// trickery makes sure the value is correct for files larger than 2GB. See
// note at http://php.net/filesize
'Content-Length: ' . sprintf('%u', filesize($filepath)),
);

sprintf('%u', filesize($filepath)) 在一个不工作的文件上的示例输出是 2682059 它不知何故被翻译成 1740048当浏览器看到它时。

我试过删除 sprintf 函数但无济于事。我也试过根本不包括 Content-Length 声明,但无论如何有人会附上不正确的值。最后一条证据可能表明一些其他代码覆盖了我在此处设置的内容 header ,但它似乎没有留下我在上述代码中更改的任何其他 header 以测试该理论。

有想去哪里找吗?

最佳答案

我解决了这个问题。

原来 Drupal 中的另一个模块正在添加自己的内容长度 header 并从数据库而不是直接从文件中获取值(很奇怪),而且它发生在下游。通过颠倒模块接触标题的顺序,问题就消失了。我已经针对有问题的模块提交了错误报告。

关于php - 内容长度 header 设置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com