SOAP快取問題

wensongyu發表於2015-07-08

  今天在進行soap呼叫老是出錯,去其他人的機器上試下,就好了,下面是從網上找到的原因

  一開始不知道還有SOAP快取。因為類檔案改變了,重新生成了WSDL檔案,測試執行,竟然不能通過。給我的第一感覺是WSDL檔案問題,重新生成還不行,好像感覺就沒有執行新生成的WSDL檔案,難道有快取,找找我沒有做快取呀,除錯快一天了都不行。

  開始想其它辦法,開啟PHP.INI檔案,查詢soap,發現幾行字讓我頓時明白了。

  soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
soap.wsdl_cache_dir=”/tmp”

  不
然,會報: Fatal error: Uncaught SoapFault exception: [Client] Function
(”test”) is not a valid method for this service in
D:xampphtdocsclien.php:5 Stack trace: #0 [internal function]:
SoapClient->__call(’test’, Array) #1 D:xampphtdocsclien.php(5):
SoapClient->test() #2 {main}錯誤。

  快取竟然是自己生成的,還很隱蔽。怪不得找半天。

  要是你碰見SOAP的錯誤,一定要先看下快取刪除沒,以免事倍功半哦。

  補充:天大的祕密,呼叫過WebService以後,你瀏覽的伺服器和呼叫的伺服器都有一份WSDL快取檔案,也就是說要把這兩個伺服器上的都刪去,改動才會生效。變態啊!

在頁面頂部可以加上:
ini_set(“soap.wsdl_cache_enabled”, “0”); // disabling WSDL cache 除錯時加上這一句很重要,去除快取做測試.


相關文章