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)
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen
WordPress auf einem Server ohne fopen()? Was für ein saublöder Hoster ist das?
Soweit ich weiß nutzt WordPress keine Funktionen, die allow_url_fopen benötigen. Hatte bisher auch keine anderen Probleme.
Hoster ist Goneo, mit dem ich ansonsten sehr zufrieden bin.
Diverse Plugins nutzen es, die Updateprüfung m.W. ebenfalls.
Habe das nochmal verifiziert. WordPress an sich benötigt es definitiv nicht. Auch die Updateprüfung nicht. Plugins laufen bei mir auch alle ohne Probleme.
Eigenartig. Aber gut zu wissen.
Das hat nichts mit saublöd, sondern Sicherheit zu tun.
Was genau soll daran sicherer sein?
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
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!