php - SoapServer,handle() 错误 - 过程未设置

标签 php fault soapserver

所以错误是:

PHP fatal error :过程“sup:set_availability”不存在于 XMLSoapServer.php 中

我在我的开发环境 (MAMP) 上收到此错误。

这是由无效的 XML 字符串引起的,其中未定义“sup”命名空间:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" 
    xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <sup:set_availability>
            <SetAvailability>
                ...
            </SetAvailability>
        </sup:set_availability>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

(这是一个外部请求,所以我不能直接去更正来源 - 我可以,但至少不能在短时间内通知。)

问题是我有 2 个服务器在处理同一个请求。没有错误。所以我的任务是找出原因:)

一些细节:

  • 服务器 1:php 5.3.2
  • 服务器 2:php 5.4
  • 开发:php 5.4

到目前为止我已经检查过的事情:

  • 代码同svn-checkout
  • 没有隐藏的开发或生产设置
  • apache 配置相同
  • 禁用 wsdl 缓存,清除缓存的 wsdl
  • php.ini 设置相同,但 libxml2 除外:

服务器 1 的版本为 2.6.26 服务器 2 的版本为 2.7.7 - 在该版本上请求非常有效 我的开发环境有 lixml2 版本 2.8.0 - 并且确实抛出了 fatal error 。

我的猜测是(或曾经)是 libxml2 导致了错误 - 但我找不到关于这个主题的任何资源 - 我也没有成功将我的本地 libxml2 版本降级到 2.6 或 2.7。

那么...对此有什么想法吗?

最佳答案

我不知道问题是什么...但是由于 native PHP SoapClient 对我来说总是有点“不透明”,所以我喜欢使用 Dklab_SoapClient library .

它使用 Curl 来检索 Soap 数据,它比本地 PHP 类灵活得多。 另外,如果您也需要,您甚至可以扩展它以添加您自己的功能 :) 我猜它会解决您的问题。

但是,如果您不想使用外部库,我不知道是什么原因造成的...

关于php - SoapServer,handle() 错误 - 过程未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23397197/

相关文章:

php - 如何填充复合消息并作为 SoapServer 响应 XML 返回?

javascript - 日期范围提示模态不能用作所述模态中的变量

php - Codeigniter - 分页 - 要显示的数字链接

c# - 通信异常并自动重新连接?

java - 如何从 Axis Web 服务返回复杂对象

PHP SoapClient : SoapFault exception Could not connect to host

php - 使用 php 进行电子邮件转发 | craigslist 的匿名电子邮件生成器

php - 如何使用codeigniter在分页中添加 'div'

python skimage.measure.label 在linux环境下导致segment fault