Hier ist die Lösung von Hosteurope:
Auszug:
Eigentlich Ursache ist der Anbieter (
http://ec.europa.eu) der wsdl Datei.
Was ist passiert?
Im Internet sind IPv4 Adressen knapp geworden und ipv6 wurde eingeführt.
Wir haben zum 08.06.2011 die ersten IPv6 Adressen aktiviert und zum 06.06.2012 alle Host Europe Domains IPv6 Kompatibel gemacht.
Der Anbieter hat vermutlich kürzlich IPv6 Records publiziert wodurch Ihr Skript aufgehört hat zu arbeiten.
ec.europa.eu has address 147.67.119.103
ec.europa.eu has address 147.67.136.3
ec.europa.eu has address 147.67.136.103
ec.europa.eu has address 147.67.119.3
ec.europa.eu has IPv6 address 2a01:e0b:1:143:62eb:69ff:fe8f:1764
ec.europa.eu has IPv6 address 2a01:e0b:1:143:62eb:69ff:fe8f:16e6
Hinter ec.europa.eu läuft ein Proxy der unterschiedlich auf Request reagiert die per IPv6 oder per IPv4 rein kommt.
Per Curl oder fsockopen Funktion lässt sich prüfen ob eine Verbindung zur Externen URL vom Server möglich ist.
curl -v -6
http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl#####* About to connect() to ec.europa.eu port 80 (#0)
* Trying 2a01:e0b:1:143:62eb:69ff:fe8f:1764... connected
* Connected to ec.europa.eu (2a01:e0b:1:143:62eb:69ff:fe8f:1764) port 80 (#0)
> GET /taxation_customs/vies/checkVatService.wsdl HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.21.0
> OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: ec.europa.eu
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 03 Jul 2012 23:27:50 GMT
< Accept-Ranges: bytes
< Last-Modified: Thu, 23 Feb 2012 19:05:09 GMT < X-Powered-By: Servlet/2.5 JSP/2.1 < Content-Length: 10201 < Set-Cookie: MYSRV=server01; path=/ < Cache-control: private < <?xml version="1.0" encoding="UTF-8"?> #######################################
Der Proxy ist anscheinend sehr seltsam konfiguriert, da ohne Angabe des User Agents dieser einen nicht durchlässt.
Curl gibt seinen per Default an, per fsockopen muss man diesen angeben.
Ohne Agent:
<?php
$fp = fsockopen("ec.europa.eu", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET /taxation_customs/vies/checkVatService.wsdl HTTP/1.1\r\n"; $out .= "Host: ec.europa.eu\r\n"; //$out .= "User-Agent: Mozilla/5.0 Firefox/3.6.12\r\n"; $out .= "Accept: */*\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ?>
php -f fsock_v6_host.php
HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html
Content-Length: 310
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Error</title> </head> <body> <h1>Erreur 503</h1> <h2>Erreur proxy ipv6</h2> </body> </html>
Mit Agent:
php -f fsock_v6_host_header.php
HTTP/1.1 200 OK
Date: Tue, 03 Jul 2012 22:49:37 GMT
Accept-Ranges: bytes
Last-Modified: Thu, 23 Feb 2012 19:05:09 GMT
X-Powered-By: Servlet/2.5 JSP/2.1
Content-Length: 10201
Connection: close
Set-Cookie: MYSRV=server03; path=/
Cache-control: private
<?xml version="1.0" encoding="UTF-8"?>
ende
In meinem Fall wurde diese Zeile
$client = new SoapClient('
http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl');durch diese Zeilen ersetzt:
$options = array( 'soap_version'=>SOAP_1_1, 'exceptions'=>true, 'trace'=>1, 'cache_wsdl'=> WSDL_CACHE_NONE, 'user_agent' => 'Mozilla', 'proxy_host' => '[2a01:e0b:1:143:62eb:69ff:fe8f:1764]', 'proxy_port' => 80, );
$client = new SoapClient('
http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl',$options);
HostEurope hat mich in diesem Fall nicht entäuscht. Ich bin seit sehr vielen Jahren Kunde und halte diese Hostingfirma nach wie vor für die Beste.
BITTE NÄCHSTEN POST UNBEDINGT AUCH NOCH LESEN !!