0
我有一個需要連接到SOAP服務器一個PHP客戶端:PHP SOAP客戶端通過IPv4
$client = new \SoapClient('url_to_wsdl.wsdl', [
'local_cert' => 'path_to_certificate.pem',
'connection_timeout ' => 300,
'trace' => 1,
]);
$params = [];
$response = $client->executeAFunction($params);
但SOAP客戶端無法連接到主機:SoapFault "Could not connect to host"
(它實際上無法加載wsdl文件,但我通過使用文件的本地副本嘲笑)。
我發現Soap客戶端無法連接到主機,因爲它默認情況下使用IPv6(我因爲this answer on SO而得到了這一點)。
我有什麼迄今所做的:
- 我已經在我的服務器(Ubuntu的)上禁用IPv6的,但並沒有改變任何東西 到SOAP客戶端。 通過終端
$ curl -6 http://v6.testmyipv6.com/
curl: (6) Could not resolve host: v6.testmyipv6.com
$ curl -4 http://v4.testmyipv6.com/
<html>
<head>
<title>IPv6 Test and Dual-Stack Test For Network Connectivity</title>
...
# the above commands are true for all urls I tested
我的實際問題的服務器
我雙重檢查的通過IPv4和IPv6網站的可訪問性是:我怎麼能告訴SOAP客戶端使用連接到主機IPv4而不是使用IPv6?
檢查DNS記錄。如果服務器無法通過IPv6訪問,則不能有任何AAAA記錄。 –
@SanderSteffann沒有AAAA記錄,這是問題...該系統能夠到達服務器,但會嘗試看看它在IPv6上造成了「無法連接到主機的過錯。 –
只有在已知IPv6地址的情況下,客戶端纔會默認使用IPv6。如果沒有IPv6地址,則客戶端會回退到IPv4,除非您以某種其他方式強制使用特定的協議(就像您使用curl所做的那樣)。你必須有一個不同的問題。 –