PHP: cURL als Alternative für allow_url_fopen

Gestern bekam ich eine Mail von meinem Webhoster, dass ab sofort die aktuellste PHP-Version 5.3.6 zur Verfügung steht. Die neue Version ist nun direkt als Modul in Apache integriert, anstatt wie früher als CGI-Programm. Dadurch sollen sich spürbare Geschwindigkeitsverbesserungen ergeben. Tatsächlich muss ich sagen, dass mein Blog deutlich schneller lädt, vor allem der Admin-Bereich.

Allerdings wurde aus Sicherheitsgründen auch die Funktion „allow_url_fopen“ standardmäßig deaktiviert. Damit funktioniert mein kürzlich vorgestelltes Skript zum RSS-Feeds auslesen leider nicht mehr. Den Code habe ich auch zum Anzeigen der „Hartware News“ in der Sidebar ganz unten auf der Startseite verwendet. Also was tun? Zurück auf die alte PHP-Version und die bessere Performance herschenken? Nein, kommt nicht in Frage. Also musste mein Skript angepasst werden. War sogar deutlich einfacher als ich anfangs dachte.

Anstatt des bisherigen Codes zum Laden des RSS-Feeds

$xml =simplexml_load_file('http://www.hartware.net/xml/news.rdf

hier die Lösung mit cURL:

$url = "http://www.hartware.de/xml/news.rdf";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$xml_raw = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string($xml_raw)

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter, Facebook, Google+ und Google+ (privat) folgt.

9 Antworten

  1. tux. sagt:

    WordPress auf einem Server ohne fopen()? Was für ein saublöder Hoster ist das?

  2. heldix sagt:

    Bitte erstmal informieren. Fopen per sé ist nicht deaktiviert! Lediglich das Öffnen externer außerhalb des eigenen Webspaces liegenden Seiten wird durch allow_url_fopen verhindert.
    Updates von WordPress etc. werden dann trotzdem funktionieren, wenn sie auf den eigenen Webspace in einen Unterordner (updates o.ä.) hochgeladen werden.

    Lg,
    heldiX

  3. Vegan sagt:

    Cool, danke für den Tipp!

    Bin auch bei Goneo und die herkömmlichen Lösungen mit rss->load und simplexml_load funktionierten nicht. Ich habe verzweifelt den „Fehler“ gesucht bis ich feststellte, dass mein Code problemlos auf meinem eigenen Apache-Server lief. Es scheint also wirklich an Goneos Sicherheitseinstellungen zu liegen.

    Eine Suche nach „Goneo“ und „simplexml_load“ brachte mich zu Deinem Blog und auf die Lösung. Damit funktioniert es problemlos. Vielen Dank!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.