我有一个IP摄像头,触发器将JPG图片上传到我的apache-php网络服务器。
相机发送POST请求,其中多部分数据以边界分隔,在大多数情况下都可以。
但有时(每张〜第5张照片)相机发送错误的内容长度(非常大的数字,139TB)。这是相机软件中的一些错误。发生此问题时,$ _REQUEST和$ _FILES数组为空。
除了错误的内容长度,其他一切都在请求内, 我用NETCAT听了它并解析好图片,没关系(仅限14KB)
所以,如果我可以告诉php(php.ini或其他)忽略内容长度并按边界阅读post vars,一切都会没问题。
php有这样的开关吗?
更新
分析后,似乎在这台相机的情况下,
wrongContentLength is always == correctLength + 139736760975360
== correctLength + 0x00007f1700000000
这可能是由一些32位 - 64位混音引起的。
但忽略问题的唯一方法是手动解析php://input
,当问题出现时可读取...从getallheaders()读取边界,并解析其中两个之间的文件数据。