當我把程式寫完並在自己的機器上測試通過後,佈署到客戶租用的虛擬主機上時,卻發現程式不能正常執行。
後來追蹤後發現 PHP 的 SOAP 模組,在不同平台上的行為會不一樣~
其差異點如下:
- 在 Windows 下,執行 SoapClient::__soapCall 時,$arguments 要多包一層 array
- 也就是說,如果在 Linux 下,$arguments 是 $data 的話;在 Windows 下要改為 array(&$data)
- 在 Windows 下,執行 SoapClient::__soapCall 的返回值是 array 結構;而在 Linux 下則是 object 結構
- 這部分的差異,可以參考這裡,用 objectToArray 函數來統一轉成 array 結構