根据文档,php://input
并不总是包含 HTTP 请求正文。
我有一些代码总是在脚本启动时打开流,以使其对用户应用程序可用:
$stream = fopen('php://input', 'rb');
如果用户应用程序尝试从空流中读取Content-Length > 0
,我希望我的库抛出异常:
请求正文不可用。
我的问题是:
- 如果流为空,则在未调用时
feof()
返回;false
fread()
- 那我不能
fread()
1 字节fseek()
,因为这个流不支持搜索; - 我无法打开另一个
php://input
并尝试事先从中读取,因为我们不能多次依赖此流可用; - 出于性能原因,我不想在将手交给用户应用程序之前
php://input
盲目复制。php://temp
因此,是否可以判断是否在 之后但在 any 之前php://input
包含数据fopen()
fread()
?