1und1 und sinpleXML-Load-File-Function
Bobby
- php
Moin
Ich habe ein PHP-Script das die SimpleXML-Load-file()-Funktion beinhaltet und welches bis Ende voriger Woche auch noch funktionierte. Der Webspace ist von 1und1.
Heute kommt nun folgenden Fehlermeldung:
Warning: simplexml_load_file() [function.simplexml-load-file]: URL file-access is disabled in the server configuration in /homepages/22/d69954164/htdocs/search.php5 on line 137
Warning: simplexml_load_file(http://ws.geonames.org/findNearbyPostalCodes?postalcode=01129&country=DE&radius=100&maxRows=500&style=SHORT) [function.simplexml-load-file]: failed to open stream: no suitable wrapper could be found in /homepages/22/d69954164/htdocs/search.php5 on line 137
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://ws.geonames.org/findNearbyPostalCodes?postalcode=01129&country=DE&radius=100&maxRows=500&style=SHORT" in /homepages/22/d69954164/htdocs//search.php5 on line 137
Hat 1und1 nun die Funktion simplexml-load-file() aus der Standardkonfiguration von PHP5 rausgenommen? oder liegt ein anderes Problem vor? Wer kann mir etwas Rat geben?
Um Gleich Fragen vorzubeugen. Unter http://ws.geonames.org/findNearbyPostalCodes?postalcode=01129&country=DE&radius=100&maxRows=500&style=SHORT findet sich ein XML-Document mit Entfernungsangaben für eine PLZ. Das ist auch dringend notwendig. Und der Service wird von Geonames.org erlaubt.
Gruß Bobby
Moin
1und1 hat nun URL-fopen-wrapper deaktiviert.
Mit Hilfe einer kleinen Funktion muss das entfernte Dokument halt selbst geholt werden.
folgender Code:
Statt:
$xml = simplexml_load_file("http://ws.geonames.org/findNearbyPostalCodes?postalcode=".$_POST['plz']."&country=".$_SESSION['lang']."&radius=100&maxRows=500&style=SHORT");
Nun:
function get_document($url)
{
$content = '';
$is_header = TRUE;
$base_url = parse_url($url);
if ($fp = @fsockopen($base_url['host'], 80, $errno, $errstr, 5))
{
if (!empty($base_url['query']))
{
$query = '?'.$base_url['query'];
}
else
{
$query = '';
}
$data = 'GET '.$base_url['path'].$query." HTTP/1.0\r\n".
'Host: '.$base_url['host']."\r\n".
"Connection: Close\r\n\r\n";
stream_set_timeout($fp, 5);
fputs($fp, $data);
while(!feof($fp))
{
$line = fgets($fp, 4096);
if (!$is_header)
{
$content .= $line;
}
else
{
if (strlen(trim($line)) == 0)
{
$is_header = FALSE;
}
}
}
fclose($fp);
return $content;
}
else
{
return FALSE;
}
}
if ($data = get_document("http://ws.geonames.org/findNearbyPostalCodes?postalcode=".$_POST['plz']."&country=".$_SESSION['lang']."&radius=100&maxRows=500&style=SHORT") ){
$xml = simplexml_load_string($data);
$xml = new simpleXMLElement($xml->asXML());
}
Gruß Bobby