2013-04-29 61 views
0

我已經寫了使用http://code.google.com/p/php-wsdl-creator/downloads/list 我的客戶在PHP中的SOAP服務器是用C#編寫Dynamics CRM Online中的插件 一切正常,我的測試網站,但是,當我遇到的客戶端發送SOAP服務器虛擬主機,他們已經上傳的文件,但我發現了以下錯誤返回:PHP SOAP服務器不工作

SoapServer::SoapServer(): 'soap_version' option must be SOAP_1_1 or SOAP_1_2 

我相信這是他們的服務器上的配置問題(他們不得不爲此再安裝一個SOAP模塊),但我不不知道去哪裏看/建議把它排除。

作爲參考,我的C#類在Web引用中引用SOAP服務器。我已經添加了以下行,試圖既11和12,但無濟於事:

soap.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap11; 

當我看的phpinfo頁面,我的測試服務器有行'--enable-soap' '--with-xsl=/usr在配置命令部分,其中作爲網絡主機版本不會,但它確實在附加的.ini文件中解析了行/etc/php.d/soap.ini - 會導致任何問題嗎?我對配置php服務器一無所知。

+0

這是一個糟糕的標題。請閱讀http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title – 2013-04-29 11:10:55

回答

0

嘗試設置SoapServer構造函數(PHP)中的soap_version選項。例如:

$server = new SoapServer("some.wsdl", array('soap_version' => SOAP_1_2)); 
+0

將嘗試此 - 可能需要一個小時才能讓主機更新文件。 – 2013-04-29 11:56:02

+0

原來SoapServer在2個地方定義了任何邏輯。乾杯 – 2013-04-30 15:00:12

5

我在php-wsdl-createor-framework中遇到了同樣的問題。 他們對https://code.google.com/p/php-wsdl-creator/補丁是在class.phpwsdl.php

線434

// SOAP server options 
    $this->SoapServerOptions=Array(
     'soap_version' => SOAP_1_1|SOAP_1_2, 
     'encoding'  => 'UTF-8', 
     'compression' => SOAP_COMPRESSION_ACCEPT|SOAP_COMPRESSION_GZIP|9 
    ); 

改變

// SOAP server options 
    $this->SoapServerOptions=Array(
     'soap_version' => (defined('SOAP_1_2'))?SOAP_1_2:SOAP_1_1, 
     'encoding'  => 'UTF-8', 
     'compression' => SOAP_COMPRESSION_ACCEPT|SOAP_COMPRESSION_GZIP|9 
    ) 

希望它可以幫助任何人

+0

這實際上是那些使用[PhpWsdl](https://code.google.com/p/php-wsdl-creator/)的人的解決方案。 – mirtillotta 2015-02-06 14:09:34