php - 无法处理 PHP 的 SoapServer->handle() 方法中的错误

标签 php zend-framework soap error-handling zend-soap

我使用 PHP 5.3 创建了一个基于 WSDL 的 SOAP Web 服务。我使用 Zend Framework 来处理服务,而 ZF 又位于 PHP 的内置 SoapServer 类之上。

在使用 SoapUI 进行测试时,我发现传递无效类型的参数(例如,当 WSDL 定义整数时传递字符串)会导致空响应。深入研究代码,我发现当 ZF 调用 SoapServer->handle() 时,执行会因以下 fatal error 而终止:

Fatal error: SOAP-ERROR: Encoding: Violation of encoding rules

这个错误是有道理的,但是对于我的生活,我无法弄清楚如何捕获它以便我可以优雅地处理它。我的理解是,handle() 应该抛出一个异常,但它只是死了。

但这就是它变得非常奇怪的地方......

使用 SoapUI 运行多个测试,而不进行任何代码更改,会产生不同的结果。大多数时候,我得到的是空的响应,但偶尔,我会得到一个 SoapFault(我所期望的!)。然而,它并不一致,我无法弄清楚是什么触发了它。据我所知,我关闭了 SoapUI 中的缓存功能以及 WSDL 缓存。我不知道它是否与 SoapUI 或 PHP 有关。正如我所说,很奇怪。

相关,我发现了这个旧的 PHP 错误:

http://bugs.php.net/36629

这听起来很像我自己的问题。不过,我并不完全相信这是我的问题,主要是因为涵盖所有这些的 PHP 文档以及 ZF 的文档非常不完整。因此,我很可能只是在做一些非常错误的事情并且不知道。鉴于此,我希望看到一个简单的 shell,它显示了捕获和处理错误的正确方法。但我会接受人们可能提供的任何帮助。

最佳答案

你可以试试评论:https://bugs.php.net/bug.php?id=50547#1298563236 (页面上的第三条评论)?

Xdebug might be the problem. When using xdebug_disable() before calling the handle() method, the server responds with a proper SOAP message which says that something went wrong.



我遇到了完全相同的问题(有时是空响应,有时是正确的 SoapFault)。 xdebug_disable()救了我。

关于php - 无法处理 PHP 的 SoapServer->handle() 方法中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217399/

相关文章:

php - 如何用 PHP 解析 phpDoc 风格的注释 block ?

zend-framework - Zend_Date : wrong results on DST change day

jquery - 尝试使用 jQuery 为 Zend Framework 找到 AJAX 文件上传解决方案

php - MySQL 查询变量相等的情况

xml - 是否允许多个 XML 默认命名空间?

java - CXF 忽略 WebParam 注释中的 header 参数

php - 显示 jquery 验证错误消息,但正在提交表单

javascript - AJAX 请求触发 4 次而不是一次

PHP - 不能使用标量作为数组警告

php - 如何在 Windows 7 和 PHP 上使用带有自证书的 Telegram 中的 setWebhook?