PHP - HTTP Extention installieren

Für eine private Website schreibe ich an einem PHP-Skript, welches erkennen soll, ob eine URL noch aktiv ist oder nicht. Recht einfache Sache:

  1. rausschicken eines GET oder HEAD-Requests an den Server mit der entsprechenden URL
  2. wenn der Statuscode ein anderer als 200 ist, ist ein Fehler aufgetreten.
    • Mit 3XX-Fehlern kann man umgehen (i.d.R. ist die gesuchte Datei dann nur umgezogen)
    • 4XX Fehler deuten darauf hin, dass die Datei weg ist
    • 5XX Fehler deuten auf Serverfehler hin, dh. wahrscheinlich später wieder auffindbar

Bin dann auch gleich in der Dokumentation von PHP auf eine Funktion namens http_get gestoßen. Soweit so gut. Ausprobieren wollen, geht nicht. Er findet die Funktion nicht. Das ist natürlich ziemlich schade. Aber woran liegt das? Weitergesucht und herausgefunden, dass diese Funktion Teil einer PHP-Extention ist. Nämlich pecl_http.

Nun sucht man natürlich nach einer Installationsanleitung, nach Möglichkeit sogar nach einem Paket in der Paketverwaltung der Linux-Distribution. Letzteres ist völlig sinnlos, denn anstelle die Paketverwaltung zu verwenden, verwendet PHP für die Erweiterungen ein eigenes System, welches den Quellcode selbst baut, linkt und dann auf den System platziert.

Wie also genau kann man nun die Erweiterung installieren? Zunächst brauchen wir für diese Erweiterung einige Pakete, darunter:

  • libcurl3
  • libpcre3-dev
  • php5-dev (um den pecl-Befehl zu haben)

Installation mit:

sudo apt-get install libpcre3-dev php5-dev libcurl3

Nun installieren wir mal die http-Erweiterung:

sudo pecl install pecl_http

Nun lädt der pecl-Befehl die entsprechenden Quellcode-Dateien aus dem Internet herunter und baut sie. Dazu müssen wir die Orte für bestimmte Bibliotheken angeben, bspw. libevent, ich habe das einfach abgenickt (pecl vermutet diese Dateien unter /usr).

Gebaut und auf dem System sind die Dateien nun. Nun müssen wir noch die Extension aktivieren. Dazu gehen wir nach /etc/php5/*/php.ini, wobei * bspw. für apache2 oder auch cli stehen kann. Dort suchen wir nach dem Begriff "extension=", treffen auf einen Kommentar, darunter fügen wir folgende Zeilen ein:

extension=raphf.so
extension=propro.so
extension=http.so

Die pecl_http-Erweiterung der Version 2 unterstützt aber die og. Funktion garnicht mehr. Dh. alles für die Katz. Naja fast - bis ich entsprechende Methoden / Objekte in der neuen API [1] finde, die den gewünschten Zweck erfüllen können.

[1] http://devel-m6w6.rhcloud.com/mdref/http

Letzte Bearbeitung: 29.04.2015 18:20