是否可以在 PHP 的内置 Web 服务器中启用 HTTP 范围请求支持?



我使用PHP内置服务器来提供静态文件。

php -S localhost:8000

然而,我注意到Range标头被忽略了——不是为请求的范围提供服务,而是为整个资源提供服务。

我对PHP不太熟悉,我之所以使用这个服务器,是因为我正在寻找Python内置服务器(python3 -m http.server(的替代方案,该服务器不支持macOS内置的范围请求(也不支持?(。在我看来,Python和PHP服务器是两个可用的选项。知道Python不支持HTTP范围请求,有没有办法使用config.ini或其他机制在PHP中启用HTTP范围请求?

我看了php -h,但除了基本语法之外,它并没有谈论-S选项。不确定是否有更多的选项可以与它一起使用,所以这就是为什么我认为config.ini是唯一可能的方法。

如果您使用路由器启动Web服务器:

$ php -S 0.0.0.0:9999 router.php

所有http请求都将通过该脚本传递。在那里,您可以通过读取和输出文件块来处理范围请求。

使用此评论中链接到此处的脚本:https://stackoverflow.com/a/22398156/3392762

您可以在router.php中尝试以下内容:

<?php
if($_SERVER['REQUEST_URI'] === '/foo.ogg')
serveFilePartial('foo.ogg');

将用户提交的路径映射到文件时要非常小心。

我无法证明链接代码的质量。但如果您扫描它,它会查找$_SERVER['HTTP_RANGE']标头。并尝试获取请求的字节范围,并适当地提供块。

虽然我没有一个明确的答案,但我很确定文档基本上说没有。

此web服务器旨在帮助应用程序开发。它还可以用于测试目的或在受控环境中运行的应用程序演示。它不是一个功能齐全的web服务器。

相关内容

  • 没有找到相关文章

最新更新