gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:43:56 27 4
gpt4 key购买 nike

我使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com