Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SoapServer->;handle()忽略输出缓冲_Php_Soap_Buffering_Output Buffering_Soapserver - Fatal编程技术网

Php SoapServer->;handle()忽略输出缓冲

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) { /

我试图捕获PHP的
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响应,并在进程停止之前发送到浏览器,这意味着任何输出都将退出缓冲区

我希望这能帮助将来偶然发现这一点的人