我使用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服务器。