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