Php SoapServer->;handle()忽略输出缓冲
我试图捕获PHP的Php SoapServer->;handle()忽略输出缓冲,php,soap,buffering,output-buffering,soapserver,Php,Soap,Buffering,Output Buffering,Soapserver,我试图捕获PHP的SoapServer类发送的响应,以便在它实际发送到浏览器之前进行调试 我正在使用Zend_Soap_Server,它应该允许使用输出缓冲从SoapServer->handle()捕获输出。但是,handle方法似乎完全忽略了缓冲区,直接发送到浏览器并终止请求 这是直接从Zend\u Soap\u Server->handle()方法中提取的摘录 ob_start(); if ($setRequestException instanceof Exception) { /
SoapServer
类发送的响应,以便在它实际发送到浏览器之前进行调试
我正在使用Zend_Soap_Server
,它应该允许使用输出缓冲从SoapServer->handle()
捕获输出。但是,handle方法似乎完全忽略了缓冲区,直接发送到浏览器并终止请求
这是直接从Zend\u Soap\u Server->handle()
方法中提取的摘录
ob_start();
if ($setRequestException instanceof Exception) {
// Create SOAP fault message if we've caught a request exception
$fault = $this->fault($setRequestException->getMessage(), 'Sender');
} else {
try {
$soap->handle($this->_request);
} catch (Exception $e) {
$fault = $this->fault($e);
}
}
$this->_response = ob_get_clean();
从上面可以看到,来自$soap->handle()
的输出应该被捕获到缓冲区中,并用ob\u get\u clean()
分配给$this->\u response
。PHP似乎从未达到这一点,因为$soap->handle()
正在结束请求
如果我在缓冲区中回显一个字符串,它不会发送到浏览器,并且缓冲区正确,这使我认为$soap->handle()
正在做一些破坏它的事情
非常感谢您提供的任何帮助。结果表明,由于请求名称空间问题(找不到过程方法),PHP在handle方法中抛出了致命错误 当SOAP响应编译过程中发生致命错误时,它将被格式化为SOAP响应,并在进程停止之前发送到浏览器,这意味着任何输出都将退出缓冲区 我希望这能帮助将来偶然发现这一点的人