如何解决是否可以在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']
标头。并尝试获取请求的字节范围并适当地提供数据块。
尽管我没有明确的答案,但我很确定documentation本质上说不。
此Web服务器旨在帮助应用程序开发。对于测试目的或在受控环境中运行的应用程序演示,它也可能很有用。它并非旨在成为功能齐全的Web服务器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。