2010-04-07 76 views
0

我試圖發送請求的服務可以通過非標準端口訪問 - 所以不能訪問端口80.它可以通過端口80本地訪問。所以我測試了該應用程序本地和它工作正常。但是,當我將其部署到生產服務器(而不是局域網)時,它會失敗。PHP SOAP客戶端訪問非標準端口上的服務器

再次爲清楚:

-dev服務器是LAN

-SOAP服務器上是LAN

-production服務器是在WAN

-SOAP服務器可通過非標準http端口(不是80)通過NAT/FW訪問

soap客戶端使用指定的WSDL URI創建。例如:

$this->client = new Zend_Soap_Client('http://server.com:10080/path/service.asmx?WSDL'); 

但是查詢到不行:

$this->client->function($query); 

我得到一個:

Internal Server Error 

拋出異常。

PHP在這方面打破了嗎?有沒有解決方法?

回答

1

我找到了一個解決辦法:

$this->client = new Zend_Soap_Client('http://server.com:10080/path/service.asmx?WSDL',array('proxy_host' => 'server.com', 'proxy_port' => 10080)); 

我假裝有一個代理。我指定代理端口作爲服務器的端口。這工作。但是,我仍然想知道我是否犯了錯誤,或者如果這是ZF或PHP中的錯誤。我現在用ZF提交了一個bug報告:

http://framework.zend.com/issues/browse/ZF-9626

+0

沒什麼新鮮的。 – 2010-11-23 04:27:33