在我们的PHP7应用程序(在Ubuntu 16 LTS上运行)中,我遇到了有关大型SOAP请求的问题。我们的PHP应用程序基于PHP的SoapServer构建。 当我尝试以正确编码的SOAP消息发送大文件(+/- 10 MB),并将其作为base64binary传递时,出现以下错误: “第2行的XML错误col 14351283字节0没有内存”。
所有服务器的PHP设置都设置为高限额(远远超过10 MB),并且计算机具有32 GB的物理RAM。
我已经在Internet上进行搜索,并且遇到了一些类似的报告,这些报告与libxml有关,后者需要XML_PARSE_HUGE指令才能很好地处理高要求。我相信这就是我的请求返回上述错误的原因。
但是...看来,从2014年中期开始,似乎应该已经解决了PHP 5.x(请参阅https://bugs.php.net/bug.php?id=67427)。
在这些机器上,我没有看到强制libxml使用XML_PARSE_HUGE伪指令的全局php.ini设置,并且在源代码上构建新的libxml库是不可行的。
有人知道以下任何/全部内容吗?:
1)我的问题确实是由于(缺少)XML_PARSE_HUGE指令导致了太大的SOAP请求无法解码吗?
2)如果问题1的答案是“是”:有人知道我如何让PHP的SoapServer传递此XML_PARSE_HUGE指令吗?
3)如果问题1的答案为“否”:是否有人知道还有什么可能导致此问题以及如何解决(除了创建一个Soap RPC方法以成块的方式接收如此大的文件并将它们缝合在一起)?