php – 测试X-Sendfile头是否正常工作

我正在寻找一种方法来确认X-Sendfile是否正确处理由脚本( PHP)返回给Web服务器的请求.图像正在正确提供,但我想我会在curl请求中看到标题.
$curl -I http://blog2.stageserver.net/wp-includes/ms-files.php?file=/2011/05/amos-lee-feature.jpg
HTTP/1.1 200 OK
Date: Wed,04 Jan 2012 17:19:45 GMT
Server: Cherokee/1.2.100 (Arch Linux)
ETag: "4dd2e306=9da0"
Last-Modified: Tue,17 May 2011 21:05:10 GMT
Content-Type: image/jpeg
Content-Length: 40352
X-Powered-By: PHP/5.3.8
Content-Disposition: inline; filename="amos-lee-feature.jpg"

组态

在FastCGI中使用PHP-FPM 5.3.8的Cherokee 1.2.100:
cherokee.conf:vserver!20!rule!500!handler!xsendfile = 1
(由vServer设置>行为> Extensions php>处理程序:允许X-Sendfile [选中已启用])

WordPress网络/ WPMU 3.3.1:
定义( ‘WPMU_SENDFILE’,TRUE);在包含wp-settings.php之前的wp-config.php中设置了.这将触发以下代码在特定博客的WP’s wp-includes/ms-files.php:50提供文件中执行:

header( 'X-Sendfile: ' . $file );
exit;

我已经确认上面的代码片段是在exit()之前添加一个用于处置的附加标题来执行的;呼叫. Content-Disposition与curl结果一起出现,而不是最初在ms-files.php代码中.添加的代码是:
header(‘Content-Disposition:inline; filename =“’.basename($file).’”’);

研究

我有:

>进行配置更改后重新启动php-fpm / cherokee守护程序.
>在php.net/readfile的评论中尝试了几个技巧,并用ms-files.php中的简单标题替换了示例中更完整的代码.

> php.net/manual/en/function.readfile.php
> www.jasny.net/articles/how-i-php-x-sendfile/
> * codeutopia.net / blog / 2009/03/06 / sending-files-better-apache-mod_xsendfile-and-php / *

>确认[切诺基支持] [5]并测试[有和没有] [6]压缩,即使我认为它不适用,因为我的图像服务正确.我还从lighttpd帖子中发现了一个可疑的类似问题.

> * cherokee-project.com / doc / other_goodies.html *
> code.google.com/p/cherokee/issues/detail?id=1228
> webdevrefinery.com/forums/topic/4761-x-sendfile/

>在SO上找到一个模糊,可能表示标题被剥离

> stackoverflow.com/questions/7296642/django-understanding-x-sendfile

>测试上面的标题与curl,wget,Firefox,Chrome和web-sniffer.net是一致的.
>发现由于缺乏声誉,我不能发布超过2个链接.

问题

>当X-Sendfile工作正常或是否被删除时,它是否会出现在标题中?
>可以使用访问日志来确定X-Sendfile是否正常工作?

我在这里寻找一般的故障排除技巧或信息,不一定特定于PHP / Cherokee.

更新

我找到了一种在测试或沙箱环境中确认X-Sendfile或X-Accel-Redirect的合适方法:禁用X-Sendfile并检查标头.

在Cherokee中禁用允许X-Sendfile:

$curl -I http://blog2.stageserver.net/wp-includes/ms-files.php?file=/2011/05/amos-lee-feature.jpg
HTTP/1.1 200 OK
Date: Fri,06 Jan 2012 15:34:49 GMT
Server: Cherokee/1.2.101 (Ubuntu)
X-Powered-By: PHP/5.3.6-13ubuntu3.3
Content-Type: image/jpeg
X-Sendfile: /srv/http/wordpress/wp-content/blogs.dir/2/files/2011/05/amos-lee-feature.jpg
Content-Length: 40352

图像不会在浏览器中加载,但您可以看到标题存在.重新启用允许X-Sendfile后,图像加载,您可以确信X-Sendfile正在运行.

根据 source on github X-Sendfile头文件将被剥离.

如果我正确地浏览文件,那么只有在调试模式下编译它才会成功.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧