Externe Inhalte einbinden aber allow_url_fopen aktivieren ist nicht möglich
Vielleicht ist euch das Problem schon einmal begegnet, dass ihr gern von einem Webserver aus auf die Inhalte eines externen Servers zugreifen wollt. PHP bietet dafür standardmäßig einige Befehle.
Mittels file() lässt sich der Inhalt einer Datei in ein Array einlesen. Jede Zeile entspricht dabei einem Array-Element. Der filge_get_contents()-Befehl liest die Datei hingegen in einen String ein.
//kleines Beispiel
$pageAsArray = file("page.php");
print_r($pageAsArray);
$pageAsString = file_get_contents("page");
echo $pageAsString;
Soweit so gut. Bei angeschaltetem allow_url_fopen können diese Befehle problemlos ausgeführt werden. Hat der Provider jedoch die Funktion allow_url_fopen in der php.ini deaktiviert, so erscheint eine Fehlermeldung und es können mit den normalen PHP-Funktionen keine externen Dateien augefufen werden. Ein kleiner Trick schafft hierbei Abhilfe. Statt die normalen Funktionen zu nutzen, verwendet (falls installiert) einfach die Curl-Bibliothek, die jedoch bei den meisten Providern integriert ist.
Lösung des Problems – Schritt für Schritt:
- Datei info.php erstellen, mit folgendem Inhalt
phpinfo();
Datei ausführen und nach suchen nach “curl“.
Ist der Begriff nicht vorhanden, sieht’s schlecht aus, weil der Provider dann Curl (noch) nicht installiert hat. Evtl. mal nett nachfragen
Ansonsten kann’s weiter gehen. Die Datei info.php kann wieder gelöscht werden.
Neue Datei test.php erstellen, die dann folgenden PHP-Code enthält:
$ch = @curl_init("http://www.andererServer.de/extern.php");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$pageAsString = curl_exec( $ch );
curl_close($ch);
Auf den anderen Server die Datei extern.php mit irgendeinem Inhalt hochladen.
test.php ausführen und es sollte der Inhalt der externen Datei angezeigt werden. Voila
So kann man trotz deaktiviertem allow_url_fopen ganz bequem auf externe Daten zugreifen. Curl bietet darüber hinaus noch viel mehr nützliche Funktionalitäten für allemöglichen Anwendungsfälle, z. B. Login in SSL-gesicherte Website oder Anmeldung bei Websites, die Cookies nutzen unvm. Dazu schreibe ich etwas in anderen Artikeln.
Bis bald.
- Geschrieben um 10:30Uhr
- RSS-Kommentare als Feed abonnieren
- TrackBack URI
[...] zum interessanten Teil, wie bereits beschrieben, existiert eine Bibliothek für PHP, die die Curl-Funktionalität zur Verfügung stellt. Dort habe [...]