所以错误是:
PHP致命错误:XMLSoapServer.PHP中不存在过程’sup:set_availability’
我在开发环境(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>
(这是一个外部请求,所以我不能只是去纠正来源 – 我能做到,但至少不能在短时间内通知.)
问题是我有两个处理相同请求的服务器.没有错误.所以我的任务是找出原因:)
一些细节:
>服务器1:PHP 5.3.2
>服务器2:PHP 5.4
>开发:PHP 5.4
到目前为止我检查过的事情:
>代码是相同的svn-checkout
>没有隐藏的开发或仅限生产设置
> apache config是一样的
>禁用wsdl缓存,清除缓存的wsdl
> PHP.ini设置是相同的,libxml2除外:
服务器1的版本为2.6.26,服务器2的版本为2.7.7 – 请求的工作方式就像魅力一样
我的开发环境有lixml2版本2.8.0 – 并且确实抛出致命错误.
我的猜测是(或者是)libxml2导致错误 – 但是我找不到关于这个主题的任何资源 – 我也没有成功将我的本地libxml2版本降级到2.6或2.7.
那么……对此有何看法?