Bobby: 1und1 und sinpleXML-Load-File-Function

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

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. 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

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)